diff --git a/Code/edit.asm b/Code/edit.asm index 256bb59..db04293 100644 --- a/Code/edit.asm +++ b/Code/edit.asm @@ -13,12 +13,9 @@ InitEdit: ldh [SelectY], a ret - EXPORT EditOldBuffer SECTION "Edit old buffer", ROM0 -EditOldBuffer: - call UpdateJoypad - +EditOldBuffer: ldh a, [JoypadDown] and a, %1000 ret z diff --git a/Code/joypad.asm b/Code/joypad.asm index 809aa82..2d1eba8 100644 --- a/Code/joypad.asm +++ b/Code/joypad.asm @@ -1,11 +1,21 @@ INCLUDE "hardware.inc" +EXPORT JoypadDown, JoypadPressed Section "Joypad memory", HRAM ; Bits 0..7 are A, B, Select, Start, Right, Left, Up, Down JoypadPressed: ds 1 -JoypadWasPressed: ds 1 +JoypadNewlyPressed: ds 1 JoypadDown: ds 1 +EXPORT InitJoypad +SECTION "Init joypad", ROM0 +InitJoypad: + xor a + ldh [JoypadDown], a + ldh [JoypadPressed], a + ldh [JoypadNewlyPressed], a + ret + EXPORT ReadJoypad SECTION "Read Joypad", ROM0 ReadJoypad: @@ -33,9 +43,12 @@ ReadJoypad: ; complement so that active buttons read as 1 or a, b cpl - - ; store currently pressed buttons - ldh [JoypadPressed], a + + ; add to currently pressed buttons + ld b, a + ldh a, [JoypadNewlyPressed] + or a, b + ldh [JoypadNewlyPressed], a ; reset joypad ld a, $30 @@ -43,27 +56,23 @@ ReadJoypad: ret +EXPORT UpdateJoypad SECTION "Update joypad", ROM0 UpdateJoypad: ; compute & store just pressed buttons - ldh a, [JoypadPressed] + ldh a, [JoypadNewlyPressed] ld b, a - ldh a, [JoypadWasPressed] + ldh a, [JoypadPressed] cpl and a, b ldh [JoypadDown], a - ; update was pressed + ; update pressed ld a, b - ldh [JoypadWasPressed], a + ldh [JoypadPressed], a + + ; reset newly pressed + xor a + ldh [JoypadNewlyPressed], 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 02ad584..bd68ee7 100644 --- a/Code/main.asm +++ b/Code/main.asm @@ -86,6 +86,7 @@ ENDC call StartRender call UpdateAutomata call WaitRender + call UpdateJoypad call EditOldBuffer call SwapBuffers jp .mainloop diff --git a/build.bat b/build.bat index e5f3fc6..67100a2 100644 --- a/build.bat +++ b/build.bat @@ -1,9 +1,10 @@ -..\..\Assembler\rgbasm -i ..\..\Include\ -i Graphics\ -i Code\ -o Build\main.o Code\main.asm -..\..\Assembler\rgbasm -i ..\..\Include\ -i Graphics\ -i Code\ -o Build\data.o Code\data.asm -..\..\Assembler\rgbasm -i ..\..\Include\ -i Graphics\ -i Code\ -o Build\automata.o Code\automata.asm -..\..\Assembler\rgbasm -i ..\..\Include\ -i Graphics\ -i Code\ -o Build\render.o Code\render.asm -..\..\Assembler\rgbasm -i ..\..\Include\ -i Graphics\ -i Code\ -o Build\utils.o Code\utils.asm -..\..\Assembler\rgbasm -i ..\..\Include\ -i Graphics\ -i Code\ -o Build\nintendo-out.o Code\nintendo-out.asm -..\..\Assembler\rgbasm -i ..\..\Include\ -i Graphics\ -i Code\ -o Build\edit.o Code\edit.asm -..\..\Assembler\rgblink -n rom.sym -w -t -o rom.gb -d Build/main.o Build/data.o Build/automata.o Build/render.o Build/utils.o Build/nintendo-out.o Build/edit.o +..\..\Assembler\rgbasm %* -i ..\..\Include\ -i Graphics\ -i Code\ -o Build\main.o Code\main.asm +..\..\Assembler\rgbasm %* -i ..\..\Include\ -i Graphics\ -i Code\ -o Build\data.o Code\data.asm +..\..\Assembler\rgbasm %* -i ..\..\Include\ -i Graphics\ -i Code\ -o Build\automata.o Code\automata.asm +..\..\Assembler\rgbasm %* -i ..\..\Include\ -i Graphics\ -i Code\ -o Build\render.o Code\render.asm +..\..\Assembler\rgbasm %* -i ..\..\Include\ -i Graphics\ -i Code\ -o Build\utils.o Code\utils.asm +..\..\Assembler\rgbasm %* -i ..\..\Include\ -i Graphics\ -i Code\ -o Build\nintendo-out.o Code\nintendo-out.asm +..\..\Assembler\rgbasm %* -i ..\..\Include\ -i Graphics\ -i Code\ -o Build\edit.o Code\edit.asm +..\..\Assembler\rgbasm %* -i ..\..\Include\ -i Graphics\ -i Code\ -o Build\joypad.o Code\joypad.asm +..\..\Assembler\rgblink -n rom.sym -w -t -o rom.gb -d Build/main.o Build/data.o Build/automata.o Build/render.o Build/utils.o Build/nintendo-out.o Build/edit.o Build/joypad.o ..\..\Assembler\rgbfix -t "Game of Life" -v -p 0 rom.gb \ No newline at end of file diff --git a/rom.gb b/rom.gb index de1b9c6..bac0aef 100644 Binary files a/rom.gb and b/rom.gb differ