From 88956f2779d1170275e77d2de958bbebaaf7d95d Mon Sep 17 00:00:00 2001 From: Daniel Borges Date: Fri, 11 Jan 2019 00:13:47 +0100 Subject: [PATCH] new intro, louder sounds --- Code/data.asm | 59 +++++---------- Code/edit.asm | 4 +- Code/intro.asm | 171 ++++++++++++++++++++++++++++++++++++++++++ Code/main.asm | 105 +++++++++++++------------- Code/nintendo-out.asm | 88 ---------------------- Code/utils.asm | 43 ++++++++++- Code/utils.inc | 10 ++- build.bat | 18 ++--- rom.gb | Bin 32768 -> 32768 bytes todo.txt | 1 - 10 files changed, 299 insertions(+), 200 deletions(-) create mode 100644 Code/intro.asm delete mode 100644 Code/nintendo-out.asm diff --git a/Code/data.asm b/Code/data.asm index eb18b0f..bd53405 100644 --- a/Code/data.asm +++ b/Code/data.asm @@ -21,46 +21,27 @@ BitsSet: db 4; 15 = 1111 EXPORT DefaultMap -SECTION "Default Map", ROM0 +SECTION "Default Map", ROM0, ALIGN[8] DefaultMap: - ; 20x18 map with a 3-step pulsar in the middle - ;db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - ;db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - ;db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - ;db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - ;db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - ;db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - ;db 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0 - ;db 0, 0, 0, 0, 0, 0, 0, 5, 0,10,10, 0, 0, 5, 0, 0, 0, 0, 0, 0 - ;db 0, 0, 0, 0, 0, 0, 0, 1,12, 6, 2,12, 4, 1, 0, 0, 0, 0, 0, 0 - ;db 0, 0, 0, 0, 0, 0, 0, 0,12, 4, 0,12, 4, 0, 0, 0, 0, 0, 0, 0 - ;db 0, 0, 0, 0, 0, 0, 0, 5, 0,10,10, 0, 0, 5, 0, 0, 0, 0, 0, 0 - ;db 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0 - ;db 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0 - ;db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - ;db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - ;db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - ;db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - ;db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - ; 20x18 map matching the nintendo logo - db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - db 0, 0, 0, 0,13, 5, 1, 0,14,12, 4,12, 0,14, 0, 4,15, 0, 0, 0 - db 0, 0, 0, 0, 5, 5, 5,15,10,10, 4, 5, 7,14, 2, 6, 0, 0, 0, 0 - db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + ; 32x18 map matching the startup nintendo logo + db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + db 0, 0, 0, 0,13, 5, 9, 4,14,12, 4,12, 8,14, 8, 4,15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + db 0, 0, 0, 0, 5,15,15,10,10,10,14, 5,15,14, 9, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 EXPORT BackgroundTiles, BackgroundTilesEnd SECTION "Graphics", ROM0 diff --git a/Code/edit.asm b/Code/edit.asm index 89ec1b9..12a61f3 100644 --- a/Code/edit.asm +++ b/Code/edit.asm @@ -237,7 +237,7 @@ ToggleCell: .noise xor a ldh [rNR41], a ; sound length - ld a, $F1 + ld a, $F2 ldh [rNR42], a ; init volume + envelope sweep ld a, $82 ldh [rNR43], a ; frequency @@ -251,7 +251,7 @@ ToggleCell: ldh [rNR10], a ; sweep ld a, (%01 << 6) + 30 ldh [rNR11], a ; pattern + sound length - ld a, $43 + ld a, $F1 ldh [rNR12], a ; init volume + envelope sweep FREQUENCY = 100 ld a, LOW(PULSE_FREQUENCY) diff --git a/Code/intro.asm b/Code/intro.asm new file mode 100644 index 0000000..6561c4b --- /dev/null +++ b/Code/intro.asm @@ -0,0 +1,171 @@ +INCLUDE "hardware.inc" +INCLUDE "utils.inc" + +EXPORT Random, RandomEnd +SECTION "Random", ROM0, ALIGN[4] +Random: + db -1, 1, 2, -1, 2, 0, -2, -1, -2, 3, -1, -2, 2 +RandomEnd: + +EXPORT Intro +SECTION "Intro", ROM0 + + ; unpack routine from bootrom + ; adapted to run even with LCD on +GraphicA: + ld c, a +GraphicB: + ld b, 4 +.loop: + push bc + rl c + rla + pop bc + rl c + rla + dec b + jr nz, .loop + ld b, a +.waitVRAM + ldh a, [rSTAT] + and a, STATF_BUSY + jr nz, .waitVRAM + ld a, b + ld [hl+], a + inc hl + ld [hl+], a + inc hl + ret + +Intro: + ; fade bg palette + ld b, 8 +.fadeDelay0 + HaltAndClearInterrupts + dec b + jr nz, .fadeDelay0 + + ld a, %11111100 + ldh [rBGP], a + + ld b, 8 +.fadeDelay1 + HaltAndClearInterrupts + dec b + jr nz, .fadeDelay1 + + ld a, %11111000 + ldh [rBGP], a + + ld b, 8 +.fadeDelay2 + HaltAndClearInterrupts + dec b + jr nz, .fadeDelay2 + + ; load bg and obj palette [0=black, 1=dark gray, 2=light gray, 3=white] + ld a, %11100100 + ldh [rBGP], a + + ; copy nintendo logo tiles from rom to block 1 + ; borrowed from boot rom + ld de, NINTENDOLOGO_ROM + ld hl, _VRAM + $810 +.logoloop + ld a, [de] + call GraphicA + call GraphicB + inc de + ld a, e + cp $34 + jr nz, .logoloop + + ; move all map indices to block 1 + ld hl, _SCRN0 + ld bc, 18 * 32 +.copy + ldh a, [rSTAT] + and a, STATF_BUSY + jr nz, .copy + ld a, [hl] + add a, $80 + ld [hl+], a + dec bc + ld a, b + or c + jr nz, .copy + + ; display nintendo logo from new map + ld a, LCDCF_ON | LCDCF_BGON | LCDCF_BG9800 + ldh [rLCDC], a + + ; sound + ld a, $77 + ldh [rNR10], a ; sweep + ld a, (%00 << 6) + 0 + ldh [rNR11], a ; pattern + sound length + ld a, $F6 + ldh [rNR42], a ; set volume with long sweep +FREQUENCY = 146 + ld a, LOW(PULSE_FREQUENCY) + ldh [rNR13], a + ld a, SOUND_START | HIGH(PULSE_FREQUENCY) + ldh [rNR14], a + + ; slowly copy default map to v-ram column by column + ld hl, DefaultMap + ld de, _SCRN0 + ld b, 20 +.loopX + ld c, 2 + HaltAndClearInterrupts + HaltAndClearInterrupts + HaltAndClearInterrupts +.loopY + ; copy 8 tiles (that's how many there is before L and E overflow) +REPT 8 + ld a, [hl] + ld [de], a + ld a, l + add a, $20 + ld l, a + ld a, e + add a, $20 + ld e, a +ENDR + ; L and E overflowed, we can increment H and L + inc h + inc d + dec c + jr nz, .loopY + ; copy last 2 tiles +REPT 2 + ld a, [hl] + ld [de], a + ld a, l + add a, $20 + ld l, a + ld a, e + add a, $20 + ld e, a +ENDR + ; back to beginning (high byte) + ld a, h + sub a, 2 + ld h, a + ld a, d + sub a, 2 + ld d, a + + ; back to beginning + next column (low byte) + ld a, l + sub a, $3F + ld l, a + ld a, e + sub a, $3F + ld e, a + + dec b + jp nz, .loopX + + ret \ No newline at end of file diff --git a/Code/main.asm b/Code/main.asm index df309a3..6d64e00 100644 --- a/Code/main.asm +++ b/Code/main.asm @@ -45,7 +45,7 @@ FREQUENCY = 330 ldh [rNR10], a ; sweep ld a, (%01 << 6) + 30 ldh [rNR11], a ; pattern + sound length - ld a, $43 + ld a, $F1 ldh [rNR12], a ; init volume + envelope sweep ld a, l ldh [rNR13], a @@ -70,9 +70,6 @@ FREQUENCY = 330 SECTION "Main", ROM0[$150] Start: - ; save gameboy type in B - ld b, a - ; enable sound ld a, $80 ld [rNR52], a ; sound ON @@ -85,50 +82,63 @@ Start: ld a, IEF_VBLANK ld [rIE], a - xor a - ldh [rIF], a - -;IF !DEF(DIRECT_TO_GAME) -; ; skip if running on GBC or GBA -; ld a, b -; cp a, $11 -; jr z, .skip -; -; call ScrollNintendoOut -; -;.skip -;ENDC - - ; disable screen - halt - xor a - ldh [rLCDC], a - - ; load bg and obj palette [0=black, 1=dark gray, 2=light gray, 3=white] - ld a, %11100100 - ldh [rBGP], a - ldh [rOBP0], a + HaltAndClearInterrupts ; load 18 tiles ; 0..15: 2x2 cell combinations ; 16: sprite selection tile ; 17: empty tile - ld hl, _VRAM_BG_TILES - ld de, BackgroundTiles + ld de, _VRAM_BG_TILES + ld hl, BackgroundTiles ld bc, BackgroundTilesEnd - BackgroundTiles - call MemoryCopy + call VideoMemoryCopy + + HaltAndClearInterrupts + call Intro - ld hl, _VRAM - ld de, SpriteTiles + ; copy sprite tiles + HaltAndClearInterrupts + ld de, _VRAM + ld hl, SpriteTiles ld bc, SpriteTilesEnd - SpriteTiles - call MemoryCopy + call VideoMemoryCopy - ; clear OAM + ; clear OAM over 4 frames + HaltAndClearInterrupts ld hl, _OAMRAM ld d, 0 - ld bc, 40 * 4 +REPT 2 + ld bc, 40 * 2 call MemorySet - + HaltAndClearInterrupts +ENDR + + ; copy default map into 20x18 automata buffer + ld hl, DefaultMap + ld de, Buffer0 + ld c, 18 +.loopY + ld b, 20 + +.loopX + ld a, [hl+] + ld [de], a + inc de + dec b + jr nz, .loopX + + dec c + jr z, .next + + ld a, l + add a, 32 - 20 + ld l, a + jr nc, .loopY + + inc h + jr .loopY +.next + ; set scrolling to (0, 0) xor a ldh [rSCX], a @@ -137,31 +147,20 @@ Start: ; animate by default ld a, ANIMATE ldh [Control], a - - ; clear screen (both buffers) - ld hl, _SCRN0 - ld d, EMPTY_BG_TILE - ld bc, 32 * 32 * 2 - call MemorySet - - ; init buffer 0 - ld hl, Buffer0 - ld de, DefaultMap - ld bc, 20 * 18 - call MemoryCopy - + call InitJoypad call InitAutomata call InitRender call InitEdit + + ; load bg and obj palette [0=black, 1=dark gray, 2=light gray, 3=white] + ld a, %11100100 + ldh [rBGP], a + ldh [rOBP0], a ; enable h-blank interrupt in lcd stat ld a, STATF_MODE00 ld [rSTAT], a - - ; enable screen but don't display anything yet - ld a, LCDCF_ON - ldh [rLCDC], a ClearAndEnableInterrupts diff --git a/Code/nintendo-out.asm b/Code/nintendo-out.asm deleted file mode 100644 index ef82b18..0000000 --- a/Code/nintendo-out.asm +++ /dev/null @@ -1,88 +0,0 @@ -INCLUDE "hardware.inc" -INCLUDE "utils.inc" - -EXPORT Random, RandomEnd -SECTION "Random", ROM0, ALIGN[4] -Random: - db -1, 1, 2, -1, 2, 0, -2, -1, -2, 3, -1, -2, 2 -RandomEnd: - -EXPORT ScrollNintendoOut -SECTION "Scroll Nintendo Out", ROM0 -ScrollNintendoOut: - - ; wait a moment - ld b, 32 -.wait - HaltAndClearInterrupts - dec b - jr nz, .wait - - ; make noise - xor a - ldh [rNR41], a ; set sound duration - ld a, $F0 - ldh [rNR42], a ; set volume - ld a, $72 - ldh [rNR43], a ; set frequency - ld a, $80 - ldh [rNR44], a ; turn on - - ; nudge nintendo logo - ld d, HIGH(Random) - ld e, 0 - ld b, 42 -.noise - HaltAndClearInterrupts - HaltAndClearInterrupts - ld a, [de] - ldh [rSCY], a - - inc e - ld a, e - cp a, RandomEnd - Random - jr nz, .next - ld e, 0 -.next - - ld a, [de] - ldh [rSCX], a - - inc e - ld a, e - cp a, RandomEnd - Random - jr nz, .next2 - ld e, 0 -.next2 - - dec b - jr nz, .noise - - xor a - ldh [rSCY], a - - ; change noise - xor a - ldh [rNR41], a ; set sound duration - ld a, $F4 - ldh [rNR42], a ; set volume with long sweep - ld a, $62 - ldh [rNR43], a ; set frequency - ld a, $80 - ldh [rNR44], a ; start - - ; nintendo logo lift-off! -.scrollup - HaltAndClearInterrupts - - ; scroll up - ldh a, [rSCY] - inc a - ldh [rSCY], a - - ; loop until nintendo logo is out of screen - ldh a, [rSCY] - cp a, 88 - jp nz, .scrollup - - ret \ No newline at end of file diff --git a/Code/utils.asm b/Code/utils.asm index 9eb80b6..997ec0f 100644 --- a/Code/utils.asm +++ b/Code/utils.asm @@ -2,18 +2,36 @@ INCLUDE "hardware.inc" EXPORT MemoryCopy SECTION "Memory Copy", ROM0 -; hl = destination -; de = source +; de = destination +; hl = source ; bc = count MemoryCopy: - ld a, [de] - ld [hl+], a + ld a, [hl+] + ld [de], a inc de dec bc ld a, b or c jr nz, MemoryCopy ret + +EXPORT VideoMemoryCopy +SECTION "Video Memory Copy", ROM0 +; de = destination +; hl = source +; bc = count +VideoMemoryCopy: + ldh a, [rSTAT] + and a, STATF_BUSY + jr nz, VideoMemoryCopy + ld a, [hl+] + ld [de], a + inc de + dec bc + ld a, b + or c + jr nz, VideoMemoryCopy + ret EXPORT MemorySet SECTION "Memory Set", ROM0 @@ -28,3 +46,20 @@ MemorySet: or c jr nz, MemorySet ret + +EXPORT VideoMemorySet +SECTION "Video Memory Set", ROM0 +; hl = destination +; d = data +; bc = count +VideoMemorySet: + ldh a, [rSTAT] + and a, STATF_BUSY + jr nz, VideoMemorySet + ld a, d + ld [hl+], a + dec bc + ld a, b + or c + jr nz, VideoMemorySet + ret diff --git a/Code/utils.inc b/Code/utils.inc index 70beff6..eb27e9e 100644 --- a/Code/utils.inc +++ b/Code/utils.inc @@ -1,9 +1,11 @@ INCLUDE "hardware.inc" -JOYPAD_DIRECTIONS EQU (PADF_UP | PADF_DOWN | PADF_LEFT | PADF_RIGHT) - -SOUND_START EQU $80 -PULSE_FREQUENCY EQUS "(-131072 / (FREQUENCY) + 2048)" +NINTENDOLOGO_ROM EQU $104 +JOYPAD_DIRECTIONS EQU (PADF_UP | PADF_DOWN | PADF_LEFT | PADF_RIGHT) +SWEEP_ENABLE EQU $8 +SOUND_EXPIRE EQU $40 +SOUND_START EQU $80 +PULSE_FREQUENCY EQUS "(-131072 / (FREQUENCY) + 2048)" ; destroys A ClearAndEnableInterrupts: MACRO diff --git a/build.bat b/build.bat index a4ab599..2241667 100644 --- a/build.bat +++ b/build.bat @@ -1,10 +1,10 @@ -..\..\Assembler\rgbasm %* -i Graphics\ -i Code\ -o Build\main.o Code\main.asm -..\..\Assembler\rgbasm %* -i Graphics\ -i Code\ -o Build\data.o Code\data.asm -..\..\Assembler\rgbasm %* -i Graphics\ -i Code\ -o Build\automata.o Code\automata.asm -..\..\Assembler\rgbasm %* -i Graphics\ -i Code\ -o Build\render.o Code\render.asm -..\..\Assembler\rgbasm %* -i Graphics\ -i Code\ -o Build\utils.o Code\utils.asm -..\..\Assembler\rgbasm %* -i Graphics\ -i Code\ -o Build\nintendo-out.o Code\nintendo-out.asm -..\..\Assembler\rgbasm %* -i Graphics\ -i Code\ -o Build\edit.o Code\edit.asm -..\..\Assembler\rgbasm %* -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\rgbasm %* -i Graphics\ -i Code\ -o Build\main.o Code\main.asm +..\..\Assembler\rgbasm %* -i Graphics\ -i Code\ -o Build\data.o Code\data.asm +..\..\Assembler\rgbasm %* -i Graphics\ -i Code\ -o Build\automata.o Code\automata.asm +..\..\Assembler\rgbasm %* -i Graphics\ -i Code\ -o Build\render.o Code\render.asm +..\..\Assembler\rgbasm %* -i Graphics\ -i Code\ -o Build\utils.o Code\utils.asm +..\..\Assembler\rgbasm %* -i Graphics\ -i Code\ -o Build\intro.o Code\intro.asm +..\..\Assembler\rgbasm %* -i Graphics\ -i Code\ -o Build\edit.o Code\edit.asm +..\..\Assembler\rgbasm %* -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/intro.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 ddbceb4fd0ba306e3feb0295fac9c079a59e9daa..8bf7e82d39f637186852c33d4d1483f171fd62b3 100644 GIT binary patch delta 890 zcmb`FO-vI(6vual-KDMFZTBNk4CuBXHYCI*8a=rbfmBVDkBi0wL@#(SHgZ4$lrG4J zF~PJ<55!0!XQKsrkb?&$+E~fxjl_$Y7}EnWvVfANDs|YRsdo?a@t=8l?>GN>h5-!& z##-PzIo@`m-n<`PA1|2Gz3USNa2-@IxI;-2P5(x`dLQxW2C2oB3R-qI)a2zPX(4CK z;0`3gj5!lBG7~Sf!?~xZ6DZMsMq*;#E;n!kyaAKM)z4roS*yet-fI%* zVE$ZqncWIzPw!QwfhAinQzkJlM449`WQEi6g5MrVJHvsEI?opiLucuR|Un%xm*s1L*!hdolnh6ZXlYISr9U(vS9V-LIscf?(>JY zsOe)x(=*9^q)m$Si6V^=6>Yey0#rwcGQ49DwMyizw+LE}d*k_NS}cRUJ(TT?{*c^B zlCjKE**OTx(R_I|YG+TS<~Uy&a8TKW<~SF+=M19v>`BzXx0UB(h0`my?DS4SQ~ZNe z%rOgqSQ7d+^<3-*(RQAFy((3{q=VDGhl*tfe6_yX3~#f5I4!6DB%uXU(C-lN2whtm3Vg!XT1E53+(vv6#3`s@UQ%EVHw}-^}dHWHL09q1hyj zvRwb!t5(=S?--cjO$WnVVT9kpD9_-*0Ca-YQ+uo(A+$U0R$9We6GE8$W18W02kmX@ zH%+}zr`GVw?n7JImEn~#l=vLpb8s?O9h|WDrF8f%eg_Znr+AnXtZIC^!eWNZ!x%W2 z;GZ#try`JLuUmS3L42#0U2g(bLfH{+X>FTe)fJH@}!} zcvj4|%o5V{4|G)+#`uImKn`~(7bpeT!`;cNYq(rI z?;9bl>Oq;L)O4A=>wXz9#DIC`JEO=9h}7WlA5``alfh_k8Vs= z^{@i