diff --git a/028.game2/P6112-Options.i b/028.game2/P6112-Options.i
index aa3bf02..79ee4f9 100644
--- a/028.game2/P6112-Options.i
+++ b/028.game2/P6112-Options.i
@@ -5,7 +5,7 @@ P61mode =1 ;Try other modes ONLY IF there are no Fxx commands >= 20.
;; --- options common to all P61modes ---
-usecode=-1 ;CHANGE! to the USE hexcode from P61con for a big
+usecode=$8000 ;CHANGE! to the USE hexcode from P61con for a big
;CPU-time gain! (See module usecodes at end of source)
;Multiple songs, single playroutine? Just "OR" the
;usecodes together!
@@ -37,7 +37,7 @@ asmonereport =0 ;ONLY for printing a settings report on assembly. Use
p61system=0 ;1=system-friendly. Use for DOS/Workbench programs.
-p61exec =0 ;0 if execbase is destroyed, such as in a trackmo.
+p61exec =1 ;0 if execbase is destroyed, such as in a trackmo.
p61fade =0 ;enable channel volume fading from your demo
diff --git a/028.game2/assets/assets.png b/028.game2/assets/assets.png
index a91f8e9..c6533c0 100644
Binary files a/028.game2/assets/assets.png and b/028.game2/assets/assets.png differ
diff --git a/028.game2/constants.i b/028.game2/constants.i
index aeba026..68aa7b5 100644
--- a/028.game2/constants.i
+++ b/028.game2/constants.i
@@ -1,6 +1,9 @@
MPANEL_COPPER_WAIT equ $9ad1
+PIG_INITIAL_X equ $c0
+PIG_INITIAL_Y equ $e4
+
PIG_JUMP_PIXELS equ 8
PIG_PAUSE_PIXELS equ 16
PIG_MOVE_PIXELS equ 2
diff --git a/028.game2/foreground.tmx b/028.game2/foreground.tmx
index 31e64b6..d0d8437 100644
--- a/028.game2/foreground.tmx
+++ b/028.game2/foreground.tmx
@@ -8,7 +8,7 @@
- eJxjZGBg0GXEjhlH5eguZwekmYBYDAs9Kkd/OS0c8sTIhQNxLxn6RuVwy1ESn6lAnE2GvlE5/PnjPBCfxELD5GB5IBBNbjc0TgZL2hoOcsTEWT00DnbjkZuMRW4wpbuhIketuK5kQM07gy3dDRU5TQbcbbBROfrLAQBQb1rL
+ eJy7y8DAoMuIHd8dlaO7nB2QZgJiMSz0qBz95bRwyBMjFw7EvWToG5XDLUdJfKYCcTYZ+kbl8OeP80B8EgsNk4PlgUA0ud3QOBksaWs4yBETZ/XQONiNR24yFrnBlO6Gihy14rqSATXvDLZ0N1TkWHG0v0B4VI7+cgD6L2Wi
diff --git a/028.game2/game1.s b/028.game2/game1.s
index 3d5cb88..d582324 100644
--- a/028.game2/game1.s
+++ b/028.game2/game1.s
@@ -51,14 +51,19 @@ Entry:
jsr PokePanelBitplanePointers
jsr Init ; enable the playfield
- jsr ResetBigBangPattern
jsr InstallSpriteColorPalette
jsr InstallGreyPalette
+
+
Reset:
+ move.w #0,moving
move.l #fade,fadePtr
move.l #panelFade,panelFadePtr
+ bsr InitAnimPattern
+ ;; jsr CleaDeAnimPattern
+ jsr ResetBigBangPattern
move.l #0,foregroundScrollX
move.l #0,backgroundScrollX
jsr BlueFill
@@ -119,22 +124,16 @@ GameLoop:
cmp.b #$f,d0
bne .s2
move.w #0,moving
- cmp.w #1,missedTile
- beq BigBang
.s2:
jsr ProcessJoystick
- btst.b #0,joystick
- beq .notMissedTile
- move.w #1,missedTile
-.notMissedTile:
-
+ jsr CheckPigMiss
bsr Update
bsr RenderNextForegroundFrame
bsr RenderNextBackgroundFrame
if 0
- move.l #8000,d0
+ move.l #1000,d0
.checkLoop:
dbra d0,.checkLoop
move.w #$f00,COLOR00(a6)
@@ -144,7 +143,7 @@ GameLoop:
Update:
jsr UpdatePig
-
+
.backgroundUpdates:
add.l #BACKGROUND_SCROLL_PIXELS,backgroundScrollX
btst #FOREGROUND_DELAY_BIT,d6
@@ -199,14 +198,24 @@ HoriScrollPlayfield:
move.w d0,copperListScrollPtr2
rts
+
+InitAnimPattern:
+ lea animIndex,a0
+ move.l #7,d0
+.loop:
+ move.l #0,(a0)+
+ dbra d0,.loop
+ move.l #animIndexPattern,animIndexPatternPtr
+ rts
+
ResetAnimPattern:
lea animIndex,a0
- move.l animIndexPatternPtr,a1
+ move.l #animIndexPattern,a1
move.l #7,d0
.loop:
move.l (a1)+,(a0)+
dbra d0,.loop
- add.l #8,animIndexPatternPtr
+ add.l #8*4,animIndexPatternPtr
cmp.l #$ffffffff,(a1)
bne .s1
lea animIndexPattern,a0
@@ -323,8 +332,6 @@ RenderForegroundTile:
PostMissedTile:
- move.w #0,missedTile
- jsr ResetBigBangPattern
jsr InstallGreyPalette
jsr ResetItems
jsr HidePig
@@ -332,6 +339,50 @@ PostMissedTile:
bra Reset
+CheckPigMiss:
+ lea map,a2
+
+ move.l foregroundScrollX,d0
+ lsr.l #FOREGROUND_SCROLL_TILE_INDEX_CONVERT,d0
+ lsr.l #1,d0
+
+ and.b #$f0,d0
+ add.l d0,a2
+
+Offset:
+
+ move.w spriteLagX,d0
+ sub.w #PIG_INITIAL_X,d0
+ lsr.w #4,d0 ; x columns
+
+BlahX:
+
+ move.l #(FOREGROUND_PLAYAREA_WIDTH_WORDS/2)-1,d1
+ sub.w d0,d1
+ mulu.w #FOREGROUND_PLAYAREA_HEIGHT_WORDS*2,d1
+ sub.l d1,a2 ; pig x if y == bottom ?
+
+
+ move.w #PIG_INITIAL_Y,d0
+ sub.w spriteY,d0
+ lsr.w #4,d0 ; y columns
+ add.w #1,d0
+
+BlahY:
+ sub.l d1,d1
+ move.w #FOREGROUND_PLAYAREA_HEIGHT_WORDS-1,d1
+ sub.w d0,d1
+ lsl.w #1,d1
+ add.l d1,a2
+
+ move.w (a2),d0
+
+ cmp.w #$78e,d0
+ blt BigBang
+.skip:
+ rts
+
+
BigBang:
move.w #(DMAF_SPRITE),DMACON(a6) ; turn sprites off for now
move.w #0,moving
@@ -364,7 +415,7 @@ BigBang:
add.l #(BITPLANE_WIDTH_BYTES*SCREEN_BIT_DEPTH*(256-(16*8)+32)/4)+BITPLANE_WIDTH_BYTES-FOREGROUND_PLAYAREA_RIGHT_MARGIN_BYTES,a0
- move.l #(FOREGROUND_PLAYAREA_WIDTH_WORDS/2)-1,d5
+ move.l #(FOREGROUND_PLAYAREA_WIDTH_WORDS/2),d5
move.l #4,d0
@@ -402,7 +453,8 @@ ClearForegroundTile3:
bra .s2
.s1:
lea foregroundTilemap,a1
- add.w #21520,a1 ; source tile
+ ;; add.w #21520,a1 ; source tile
+ add.w #$7080,a1
.s2:
jsr BlitTile
rts
@@ -434,7 +486,8 @@ ClearForegroundTile:
bra .s2
.s1:
lea foregroundTilemap,a1
- add.w #21520,a1 ; source tile
+ ;; add.w #21520,a1 ; source tile
+ add.w #$7080,a1
.s2:
jsr BlitTile
.s3:
@@ -760,8 +813,6 @@ fadePtr:
panelFadePtr:
dc.l panelFade
-missedTile:
- dc.w 0
bigBangIndex:
ds.l FOREGROUND_PLAYAREA_HEIGHT_WORDS*FOREGROUND_PLAYAREA_WIDTH_WORDS,0
diff --git a/028.game2/pig.s b/028.game2/pig.s
index e645a88..df0bcbd 100644
--- a/028.game2/pig.s
+++ b/028.game2/pig.s
@@ -7,9 +7,14 @@
xdef SetupSpriteData
xdef ScrollSprites
xdef deadSprite
-
+ xdef spriteX
+ xdef spriteLagX
+ xdef spriteY
+
InitialisePig:
- move.w #$c0,spriteX
+ move.w #PIG_INITIAL_X,spriteX
+ move.w #PIG_INITIAL_Y,spriteY
+ move.w #PIG_INITIAL_Y+16,spriteYEnd
rts
HidePig:
diff --git a/tools/mapgen/mapgen.c b/tools/mapgen/mapgen.c
index 36c7430..75ac02a 100755
--- a/tools/mapgen/mapgen.c
+++ b/tools/mapgen/mapgen.c
@@ -114,7 +114,7 @@ output_map_asm(tmx_map *m, tmx_layer *l)
if (l->type == L_LAYER && l->content.gids) {
for (unsigned int x = 0; x < m->width; x++) {
for (unsigned int y = 0; y < m->height; y++) {
- fprintf(fp, "\tdc.w %d\n", get_tile_address(m, l->content.gids[(y*m->width)+x] & TMX_FLIP_BITS_REMOVAL));
+ fprintf(fp, "\tdc.w $%x\n", get_tile_address(m, l->content.gids[(y*m->width)+x] & TMX_FLIP_BITS_REMOVAL));
}
}
}