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)); } } }