diff --git a/Code/edit.asm b/Code/edit.asm index 0d4f2e0..256bb59 100644 --- a/Code/edit.asm +++ b/Code/edit.asm @@ -1,64 +1,5 @@ INCLUDE "hardware.inc" - -Section "Joypad memory", HRAM -; Bits 0..7 are A, B, Select, Start, Right, Left, Up, Down -JoypadPressed: ds 1 -JoypadWasPressed: ds 1 -JoypadDown: ds 1 - -EXPORT ReadJoypad -SECTION "Read Joypad", ROM0 -ReadJoypad: - ; read directions - ld a, P1F_5 - ldh [rP1], a - ldh a, [rP1] - ldh a, [rP1] - ldh a, [rP1] - ldh a, [rP1] - and a, $0F - swap a ; move into high nibble - ld b, a - ; read buttons - ld a, P1F_4 - ldh [rP1], a - ldh a, [rP1] - ldh a, [rP1] - ldh a, [rP1] - ldh a, [rP1] - and a, $0F - - ; merge directions and buttons - ; complement so that active buttons read as 1 - or a, b - cpl - - ; store currently pressed buttons - ldh [JoypadPressed], a - - ; reset joypad - ld a, $30 - ldh [rP1], a - - ret - -SECTION "Update joypad", ROM0 -UpdateJoypad: - ; compute & store just pressed buttons - ldh a, [JoypadPressed] - ld b, a - ldh a, [JoypadWasPressed] - cpl - and a, b - ldh [JoypadDown], a - - ; update was pressed - ld a, b - ldh [JoypadWasPressed], a - - ret - Section "Edit memory", HRAM SelectX: ds 1 SelectY: ds 1 @@ -70,10 +11,6 @@ InitEdit: ldh [SelectX], a ld a, 18 ldh [SelectY], a - xor a - ldh [JoypadDown], a - ldh [JoypadPressed], a - ldh [JoypadWasPressed], a ret diff --git a/Code/joypad.asm b/Code/joypad.asm new file mode 100644 index 0000000..809aa82 --- /dev/null +++ b/Code/joypad.asm @@ -0,0 +1,69 @@ +INCLUDE "hardware.inc" + +Section "Joypad memory", HRAM +; Bits 0..7 are A, B, Select, Start, Right, Left, Up, Down +JoypadPressed: ds 1 +JoypadWasPressed: ds 1 +JoypadDown: ds 1 + +EXPORT ReadJoypad +SECTION "Read Joypad", ROM0 +ReadJoypad: + ; read directions + ld a, P1F_5 + ldh [rP1], a + ldh a, [rP1] + ldh a, [rP1] + ldh a, [rP1] + ldh a, [rP1] + and a, $0F + swap a ; move into high nibble + ld b, a + + ; read buttons + ld a, P1F_4 + ldh [rP1], a + ldh a, [rP1] + ldh a, [rP1] + ldh a, [rP1] + ldh a, [rP1] + and a, $0F + + ; merge directions and buttons + ; complement so that active buttons read as 1 + or a, b + cpl + + ; store currently pressed buttons + ldh [JoypadPressed], a + + ; reset joypad + ld a, $30 + ldh [rP1], a + + ret + +SECTION "Update joypad", ROM0 +UpdateJoypad: + ; compute & store just pressed buttons + ldh a, [JoypadPressed] + ld b, a + ldh a, [JoypadWasPressed] + cpl + and a, b + ldh [JoypadDown], a + + ; update was pressed + ld a, b + ldh [JoypadWasPressed], a + + ret + +EXPORT InitJoypad +SECTION "Init joypad", ROM0 +InitJoypad: + xor a + ldh [JoypadDown], a + ldh [JoypadPressed], a + ldh [JoypadWasPressed], a + ret diff --git a/Code/main.asm b/Code/main.asm index a1ec0da..02ad584 100644 --- a/Code/main.asm +++ b/Code/main.asm @@ -20,7 +20,9 @@ Start: xor a ldh [rIF], a +IF !DEF(DIRECT_TO_GAME) call ScrollNintendoOut +ENDC ; disable screen halt @@ -68,6 +70,7 @@ Start: ld bc, 20 * 18 call MemoryCopy + call InitJoypad call InitAutomata call InitEdit