From a67840ff149d38c6531d9a4cf0f1bb4ab4445c60 Mon Sep 17 00:00:00 2001 From: alpine9000 Date: Sun, 17 Apr 2016 17:58:35 +1000 Subject: [PATCH] refactor --- 028.game2/game1.s | 124 +++---------------------------------------- 028.game2/joystick.s | 9 +++- 028.game2/pig.s | 117 +++++++++++++++++++++++++++++++++++++++- 3 files changed, 130 insertions(+), 120 deletions(-) diff --git a/028.game2/game1.s b/028.game2/game1.s index 82bbc17..880c8cf 100644 --- a/028.game2/game1.s +++ b/028.game2/game1.s @@ -9,16 +9,8 @@ xdef foregroundOffscreen xdef foregroundScrollX xdef backgroundScrollX - xdef joystick - xdef sprite - xdef deadSprite - xdef spriteX - xdef spriteY - xdef spriteYEnd - xdef spriteR - xdef spriteL - xdef spriteU - xdef spriteD + + xdef moving byteMap: @@ -88,7 +80,7 @@ GameLoop: cmp.l #FOREGROUND_PLAYAREA_WIDTH_WORDS+25,d6 bne .c1 move.w #(DMAF_SPRITE|DMAF_BLITTER|DMAF_SETCLR!DMAF_COPPER!DMAF_RASTER!DMAF_MASTER),DMACON(a6) - move.w #$c0,spriteX + jsr InitialisePig .c1: bsr InstallNextGreyPalette move.l #FOREGROUND_SCROLL_PIXELS,foregroundScrollPixels @@ -104,7 +96,7 @@ GameLoop: move.w #0,moving .s2: - bsr ProcessJoystick + jsr ProcessJoystick bsr Update bsr RenderNextForegroundFrame @@ -113,42 +105,6 @@ GameLoop: ;; move.w #$f00,COLOR00(a6) bra GameLoop -ProcessJoystick: - ;; 812 - ;; 7 3 - ;; 654 - jsr ReadJoystick - cmp.w #0,spriteR - bne .skip - cmp.w #0,spriteU - bne .skip - cmp.w #0,spriteD - bne .skip - cmp.w #0,spriteL - bne .skip - - cmp.b #3,joystickpos - bne .notRight - move.w #PIG_JUMP_PIXELS+PIG_PAUSE_PIXELS,spriteR - move.l #spritePigRight,currentSprite -.notRight: - cmp.b #1,joystickpos - bne .notUp - move.w #PIG_JUMP_PIXELS+PIG_PAUSE_PIXELS,spriteU - move.l #spritePigUp,currentSprite -.notUp: - cmp.b #5,joystickpos - bne .notDown - move.w #PIG_JUMP_PIXELS+PIG_PAUSE_PIXELS,spriteD - move.l #spritePigDown,currentSprite -.notDown: - cmp.b #7,joystickpos - bne .notLeft - move.w #PIG_JUMP_PIXELS+PIG_PAUSE_PIXELS,spriteL - move.l #spritePigLeft,currentSprite -.notLeft: -.skip: - rts @@ -383,31 +339,7 @@ Level3InterruptHandler: .verticalBlank: move.w #INTF_VERTB,INTREQ(a6) ; clear interrupt bit add.l #1,verticalBlankCount - - - - move.l currentSprite,a0 - move.w spriteLagX,d0 - move.w spriteX,spriteLagX - move.w d0,d1 - andi #1,d1 - move.b d1,3(a0) ;spriteControl - lsr.l #1,d0 - move.b d0,1(a0) ;spriteHStart - move.w spriteY,d0 - move.b d0,(a0) ;spriteVStart - move.w spriteYEnd,d0 - move.b d0,2(a0) ;spriteVStop - move.l a0,SPR0PTH(a6) - - move.l #deadSprite,SPR1PTH(a6) - move.l #deadSprite,SPR2PTH(a6) - move.l #deadSprite,SPR3PTH(a6) - move.l #deadSprite,SPR4PTH(a6) - move.l #deadSprite,SPR5PTH(a6) - move.l #deadSprite,SPR6PTH(a6) - move.l #deadSprite,SPR7PTH(a6) - + jsr SetupSpriteData .checkCopper: move.w INTREQR(a6),d0 and.w #INTF_COPER,d0 @@ -543,31 +475,6 @@ tilemap: backgroundTilemap: incbin "out/background.bin" -spritePigUp: - dc.w 0,0 - dc.w 0,0 - incbin "out/sprite_pig_up.bin" - dc.l 0 -spritePigDown: - dc.w 0,0 - dc.w 0,0 - incbin "out/sprite_pig_down.bin" - dc.l 0 -spritePigLeft: - dc.w 0,0 - dc.w 0,0 - incbin "out/sprite_pig_left.bin" - dc.l 0 -spritePigRight: - dc.w 0,0 - dc.w 0,0 - incbin "out/sprite_pig_right.bin" - dc.l 0 - -currentSprite: - dc.l spritePigRight -deadSprite: - dc.l 0 panel: incbin "out/panel.bin" map: @@ -588,26 +495,7 @@ verticalBlankCount: dc.l 0 moving: dc.w 0 -spriteR: - dc.w 0 -spriteL: - dc.w 0 -spriteU: - dc.w 0 -spriteD: - dc.w 0 -spriteLagX: - dc.w 0 -spriteX: - dc.w $0 -spriteY: - dc.w $e4 -spriteYEnd: - dc.w $f5 -joystick: - dc.b 0 -joystickpos: - dc.b 0 + fadePtr: dc.l fade diff --git a/028.game2/joystick.s b/028.game2/joystick.s index 339f0d7..760ec8a 100644 --- a/028.game2/joystick.s +++ b/028.game2/joystick.s @@ -1,6 +1,8 @@ ;; http://eab.abime.net/showpost.php?p=986196&postcount=2 xdef ReadJoystick + xdef joystick + xdef joystickpos ciaa_pra = $bfe001 joy1dat = $dff00c @@ -24,4 +26,9 @@ ReadJoystick: move.w d0,joystick rts .conv: - dc.b 0,5,4,3,1,0,3,2,8,7,0,1,7,6,5,0 \ No newline at end of file + dc.b 0,5,4,3,1,0,3,2,8,7,0,1,7,6,5,0 + +joystick: + dc.b 0 +joystickpos: + dc.b 0 \ No newline at end of file diff --git a/028.game2/pig.s b/028.game2/pig.s index c79426a..e80acb5 100644 --- a/028.game2/pig.s +++ b/028.game2/pig.s @@ -1,7 +1,15 @@ include "includes.i" xdef UpdatePig + xdef ProcessJoystick + xdef InitialisePig + xdef SetupSpriteData + xdef spriteX +InitialisePig: + move.w #$c0,spriteX + rts + UpdatePig: ;; right cmp.w #PIG_PAUSE_PIXELS,spriteR @@ -46,4 +54,111 @@ UpdatePig: blt .noScroll move.w #1,moving .noScroll: - rts \ No newline at end of file + rts + + + +ProcessJoystick: + ;; 812 + ;; 7 3 + ;; 654 + jsr ReadJoystick + cmp.w #0,spriteR + bne .skip + cmp.w #0,spriteU + bne .skip + cmp.w #0,spriteD + bne .skip + cmp.w #0,spriteL + bne .skip + + cmp.b #3,joystickpos + bne .notRight + move.w #PIG_JUMP_PIXELS+PIG_PAUSE_PIXELS,spriteR + move.l #spritePigRight,currentSprite +.notRight: + cmp.b #1,joystickpos + bne .notUp + move.w #PIG_JUMP_PIXELS+PIG_PAUSE_PIXELS,spriteU + move.l #spritePigUp,currentSprite +.notUp: + cmp.b #5,joystickpos + bne .notDown + move.w #PIG_JUMP_PIXELS+PIG_PAUSE_PIXELS,spriteD + move.l #spritePigDown,currentSprite +.notDown: + cmp.b #7,joystickpos + bne .notLeft + move.w #PIG_JUMP_PIXELS+PIG_PAUSE_PIXELS,spriteL + move.l #spritePigLeft,currentSprite +.notLeft: +.skip: + rts + + +SetupSpriteData: + move.l currentSprite,a0 + move.w spriteLagX,d0 + move.w spriteX,spriteLagX + move.w d0,d1 + andi #1,d1 + move.b d1,3(a0) ;spriteControl + lsr.l #1,d0 + move.b d0,1(a0) ;spriteHStart + move.w spriteY,d0 + move.b d0,(a0) ;spriteVStart + move.w spriteYEnd,d0 + move.b d0,2(a0) ;spriteVStop + move.l a0,SPR0PTH(a6) + + move.l #deadSprite,SPR1PTH(a6) + move.l #deadSprite,SPR2PTH(a6) + move.l #deadSprite,SPR3PTH(a6) + move.l #deadSprite,SPR4PTH(a6) + move.l #deadSprite,SPR5PTH(a6) + move.l #deadSprite,SPR6PTH(a6) + move.l #deadSprite,SPR7PTH(a6) + rts + + +spritePigUp: + dc.w 0,0 + dc.w 0,0 + incbin "out/sprite_pig_up.bin" + dc.l 0 +spritePigDown: + dc.w 0,0 + dc.w 0,0 + incbin "out/sprite_pig_down.bin" + dc.l 0 +spritePigLeft: + dc.w 0,0 + dc.w 0,0 + incbin "out/sprite_pig_left.bin" + dc.l 0 +spritePigRight: + dc.w 0,0 + dc.w 0,0 + incbin "out/sprite_pig_right.bin" + dc.l 0 + +currentSprite: + dc.l spritePigRight +deadSprite: + dc.l 0 +spriteR: + dc.w 0 +spriteL: + dc.w 0 +spriteU: + dc.w 0 +spriteD: + dc.w 0 +spriteLagX: + dc.w 0 +spriteX: + dc.w $0 +spriteY: + dc.w $e4 +spriteYEnd: + dc.w $f5 \ No newline at end of file