From 83bf451af03bf3a6e1cf35787d1309901feb14a8 Mon Sep 17 00:00:00 2001 From: Daniel Borges Date: Sun, 6 Jan 2019 22:08:27 +0100 Subject: [PATCH] repeat directions when keeping buttons pressed --- Code/edit.asm | 56 +++++++++++++++++++++++++++++++++++++++++++++---- Code/utils.inc | 17 ++++++++------- rom.gb | Bin 32768 -> 32768 bytes 3 files changed, 61 insertions(+), 12 deletions(-) diff --git a/Code/edit.asm b/Code/edit.asm index 1f194c6..d61406d 100644 --- a/Code/edit.asm +++ b/Code/edit.asm @@ -2,10 +2,14 @@ INCLUDE "hardware.inc" INCLUDE "utils.inc" SPRITE_ANIM_DELAY EQU 12 +REPEAT_START_DELAY EQU 24 +REPEAT_DELAY EQU 3 Section "Edit memory", HRAM SelectX: ds 1 SelectY: ds 1 +Down: ds 1 +RepeatDelay: ds 1 SpriteAnimation: ds 1 SpriteDelay: ds 1 @@ -16,6 +20,10 @@ InitEdit: ldh [SelectX], a ld a, 18 ldh [SelectY], a + xor a + ldh [Down], a + ld a, REPEAT_START_DELAY + ldh [RepeatDelay], a ret EXPORT EditOldBuffer @@ -89,8 +97,47 @@ EditOldBuffer: and a, JOYPAD_START jr nz, .exit - ; check left direction + ; reset input + xor a + ldh [Down], a + + ; if a direction is pressed, handle repeat + ldh a, [JoypadPressed] + and JOYPAD_DIRECTIONS + ld b, a + jr z, .addDown + + ; check if time to repeat + ldh a, [RepeatDelay] + dec a + ldh [RepeatDelay], a + jr nz, .addDown + + ; reset repeat delay and add pressed to inputs + ld a, REPEAT_DELAY + ldh [RepeatDelay], a + ld a, b + ldh [Down], a + + ; add just down keys +.addDown ldh a, [JoypadDown] + and JOYPAD_DIRECTIONS + ld b, a + ldh a, [Down] + or a, b + ldh [Down], a + + ldh a, [JoypadPressed] + or a + jr nz, .do + + ld a, REPEAT_START_DELAY + ldh [RepeatDelay], a + +.do + ; check left direction + ldh a, [Down] and a, JOYPAD_LEFT jr z, .endLeft ldh a, [SelectX] @@ -101,7 +148,7 @@ EditOldBuffer: .endLeft ; check up direction - ldh a, [JoypadDown] + ldh a, [Down] and a, JOYPAD_UP jr z, .endUp ldh a, [SelectY] @@ -112,7 +159,7 @@ EditOldBuffer: .endUp ; check right direction - ldh a, [JoypadDown] + ldh a, [Down] and a, JOYPAD_RIGHT jr z, .endRight ldh a, [SelectX] @@ -123,7 +170,7 @@ EditOldBuffer: .endRight ; check down direction - ldh a, [JoypadDown] + ldh a, [Down] and a, JOYPAD_DOWN jr z, .endDown ldh a, [SelectY] @@ -134,6 +181,7 @@ EditOldBuffer: .endDown ; wait v-blank +.skip halt jp .loop diff --git a/Code/utils.inc b/Code/utils.inc index 2f4a054..c38d376 100644 --- a/Code/utils.inc +++ b/Code/utils.inc @@ -1,13 +1,14 @@ INCLUDE "hardware.inc" -JOYPAD_A EQU $01 -JOYPAD_B EQU $02 -JOYPAD_SELECT EQU $04 -JOYPAD_START EQU $08 -JOYPAD_RIGHT EQU $10 -JOYPAD_LEFT EQU $20 -JOYPAD_UP EQU $40 -JOYPAD_DOWN EQU $80 +JOYPAD_A EQU $01 +JOYPAD_B EQU $02 +JOYPAD_SELECT EQU $04 +JOYPAD_START EQU $08 +JOYPAD_RIGHT EQU $10 +JOYPAD_LEFT EQU $20 +JOYPAD_UP EQU $40 +JOYPAD_DOWN EQU $80 +JOYPAD_DIRECTIONS EQU $F0 ; destroys A ClearAndEnableInterrupts: MACRO diff --git a/rom.gb b/rom.gb index 0194acffd38c4a12cb331923bef93c62203cfaf7..acb68756f9c608a57a103070f98e50fa634738af 100644 GIT binary patch delta 804 zcmah{O=uHA7@gTo$To@1UkzM9iWFthqG-K354hr$sWAPLbO2k8rr8cR>Y|}Pr zvvcXe`g5rsgsnvJB-ALSA?%^x#Y_E83oTSe1;HN@XVWBz2+n2Zz3+XG2lMiIA)gmk z=*d#E79AipD8W6l2}|TY%#m404Ei~;xEkkHIah>)4&}<5h)vr7t#WWx__#x_;8VFh ztiwgPprF;D4#Pi*f@)f&)9f|j5;O~oF{p1@)JD97i6Rb;}|kDWPHHJ zgy-!GOa`Dp{GjSEPX?h_XIhd~MjippLPZCyJ{59hpUdCtI#8%^j1Er@3pR<}&9J#o zwlq^4BM~X(lhM!-`IkP%3XPHRAyzPPlBp(cgg1i1_;7OO=`B{yuu@My@LzpBh%9|M zqbK{(jM+avJe#_+705)ZIl+YkOX(X*xfLV+{pD6iSzQwae6%z8vD}K+sMs0NHSw}$ zZ}hgj`zyVzUHkAq?dY_V(g%)-;~hs?QcA6uveb&Ty|JU~J?*@t**)~YmEiI-v}7l} z5Gy>ydwW;7YhR~d`zCuS{>(n@{44uSXLqgV|Jr3mDYZ`XUexK1J5b$ruM0V9O52l& zCB6w(V-|=T7IpCOp9nX?TN3|=_QRWEi*Z<#U2I|06c1%=VN5~I+o5b|Dnw9-H-k|V zzq1MalH}{W7_4HlWTc-J<4}|xM1*3Nla!Nee#08SlF!+!_ON+Vj!3NVBqGM4z)^xD jwT)DcypcXuXojQWXnUCFP;H*Dph~g#A=avoy|K)1qvUg? delta 765 zcmah{O=uHA7@gTo=r&24UxN*Zn|Me-F%hC(nlZy7Vwi5Lw)F`D(+=Jl7OBs6DL!dG!2>y_D5|f}JIER^e-+SNV!S{(GBZ^D| zoh$FzENfnosR}o8N3pbR5t4#X^x&luX z_MwU|;tN5r?sr4L>H9DUw%yMi@EX+50=*0MCqVxI1rDDVL~8OKJM~XM&oKHCpf`c8 zL4Cpb`WYmR6sboaVkL*`DsE_k4@-gv%i2=No_orF)l{tDIwim#rvMoXNA6_F>PJh4 z$en0}OS^e6GsXW<=ZMsa&d(6ZfGHvyuoK?$GxLGe^5dJNoF%2P-uGX<<_CR!Ijg3o z!Ll(uA6QA>-tlH*tpa0*-eTr@ux!Q!Pq$(Ym8}hyfro~~w~Co)BX&rk4fb-=+8KAb zx@+UEJ!{~fb|`N{=>EjQ(V-*H1xsc;STy4UZ#XgX&f6|Etxj}cPg40ARJ97@5NkBV zd+SKJXWc}fCl|*le$Sq_{gwTOZPYgQe`)VWDVe9~UTEl@!`s?*Y%&GK;C2@QNq%Aa z8&ee=xTaz!okX}3-r?vR1|L_N)DpPH+evlSV1LO-buI{cw?etlQb+(Hx*0?<;2R4= zAC5mqZ$82i=~0ADV2Pq6Me+d26uBakMCyfoF?M#qiWJMeV|^&26Rrm^(|YTQXHjhG F_)m-BS9kyb