From bd9fae16377bf6d2a59d765021c912c3673df4eb Mon Sep 17 00:00:00 2001 From: Daniel Borges Date: Sun, 13 Jan 2019 00:05:20 +0100 Subject: [PATCH] GBC fixes: skip logo fade + set logo vram map --- Code/intro.asm | 50 ++++++++++++++++++----- Code/main.asm | 106 +++++++++++++++++++++++++------------------------ rom.gb | Bin 32768 -> 32768 bytes 3 files changed, 94 insertions(+), 62 deletions(-) diff --git a/Code/intro.asm b/Code/intro.asm index 6561c4b..ece39fa 100644 --- a/Code/intro.asm +++ b/Code/intro.asm @@ -38,6 +38,11 @@ GraphicB: ret Intro: + ; skip fade-out on gameboy color + ldh a, [GameboyType] + cp a, $11 + jr z, .setBGPalette + ; fade bg palette ld b, 8 .fadeDelay0 @@ -64,6 +69,7 @@ Intro: jr nz, .fadeDelay2 ; load bg and obj palette [0=black, 1=dark gray, 2=light gray, 3=white] +.setBGPalette ld a, %11100100 ldh [rBGP], a @@ -80,21 +86,43 @@ Intro: cp $34 jr nz, .logoloop - ; move all map indices to block 1 + ; display logo in map 0 from block 1 ld hl, _SCRN0 - ld bc, 18 * 32 -.copy + ld d, $80 + ld bc, 8 * 32 + 4 + call VideoMemorySet + + ld b, 12 +.logoLine1 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 + jr nz, .logoLine1 + inc d + ld [hl], d + inc hl + dec b + jr nz, .logoLine1 + + ld d, $80 + ld bc, 20 + call VideoMemorySet + ld b, 12 + ld d, $8C +.logoLine2 + ldh a, [rSTAT] + and a, STATF_BUSY + jr nz, .logoLine2 + inc d + ld [hl], d + inc hl + dec b + jr nz, .logoLine2 + + ld d, $80 + ld bc, 8 * 32 + 28 + call VideoMemorySet + ; display nintendo logo from new map ld a, LCDCF_ON | LCDCF_BGON | LCDCF_BG9800 ldh [rLCDC], a diff --git a/Code/main.asm b/Code/main.asm index 8ab7450..dad369d 100644 --- a/Code/main.asm +++ b/Code/main.asm @@ -7,8 +7,10 @@ EMPTY_BG_TILE EQU 17 ANIMATE EQU %01 STEP EQU %10 +EXPORT GameboyType SECTION "Main Memory", HRAM Control: ds 1 +GameboyType: ds 1 SECTION "Header", ROM0[$100] EntryPoint: @@ -18,58 +20,10 @@ REPT $150 - $104 db 0 ENDR -SECTION "Jingle", ROM0 -Jingle: - - ; load initial frequency into HL -FREQUENCY = 330 - ld hl, PULSE_FREQUENCY - - ; load step to be added to frequency in DE - ; based on if a != 0 or not - or a - jr z, .up -.down - ld de, 100 - jr .do -.up - ld de, -100 - -.do - ; load note count - ld b, 3 -.loop - - ; play pulse channel 1 with frequency set in HL - xor a - ldh [rNR10], a ; sweep - ld a, (%01 << 6) + 30 - ldh [rNR11], a ; pattern + sound length - ld a, $F1 - ldh [rNR12], a ; init volume + envelope sweep - ld a, l - ldh [rNR13], a - ld a, h - or a, SOUND_START - ldh [rNR14], a - - ; add DE to HL frequency - add hl, de - - ; wait ~166ms - ld c, 6 -.delay - HaltAndClearInterrupts - dec c - jr nz, .delay - - ; repeat a few times - dec b - ret z - jr .loop - SECTION "Main", ROM0[$150] -Start: +Start: + ldh [GameboyType], a + ; enable sound ld a, $80 ld [rNR52], a ; sound ON @@ -233,3 +187,53 @@ FREQUENCY = 220 ldh [rLCDC], a jr .mainloop + +SECTION "Jingle", ROM0 +Jingle: + + ; load initial frequency into HL +FREQUENCY = 330 + ld hl, PULSE_FREQUENCY + + ; load step to be added to frequency in DE + ; based on if a != 0 or not + or a + jr z, .up +.down + ld de, 100 + jr .do +.up + ld de, -100 + +.do + ; load note count + ld b, 3 +.loop + + ; play pulse channel 1 with frequency set in HL + xor a + ldh [rNR10], a ; sweep + ld a, (%01 << 6) + 30 + ldh [rNR11], a ; pattern + sound length + ld a, $F1 + ldh [rNR12], a ; init volume + envelope sweep + ld a, l + ldh [rNR13], a + ld a, h + or a, SOUND_START + ldh [rNR14], a + + ; add DE to HL frequency + add hl, de + + ; wait ~166ms + ld c, 6 +.delay + HaltAndClearInterrupts + dec c + jr nz, .delay + + ; repeat a few times + dec b + ret z + jr .loop diff --git a/rom.gb b/rom.gb index b3bcda710d5aad548491d3fa10ab0427a15d89c4..b338b9f09cb3916fc371816de2187c142df41861 100644 GIT binary patch delta 235 zcmZo@U}|V!n&8a%W1>rfaFy`-2MTsy9w^!sJy5c1c%XdNapHDuCKcg{PqJ9na6gzj zIe<}~@#EwIMhTgZOzR);moX?Z{1anf3}845(hKB+nUj|=>R2`jpVehJ`-Amtl(5~C z2ks9%>^L4cuK)dj|HG8+8X{*Mh0n6EomCM&E6ea<%Co-@rbwuP4LIwznUm=!<7O6? zle}ynrv4MuP@8;K(7{Zsfsuvr>?>9_o)3=Cm=u1A6e+VRd;yAzFn~qHdeFpWK&mIp O3$0unO zvnzj~VmI@FsvYBl|LY&{moW%3Oi&CGU=(0H`<@9baQ3VqRH8vKNsuvs0Vbiy@K1~Z z#0Oae)Cp!zUdE_n86kXDm*MOW*0Tn}c26F-Kk%^Qc;LAH_XGY9Q?_e}oD~;7%ffc{ zm(W>Rh7VJo{e3V+LJeY*%Vut-pNyNCSWfd!zAWe<#OT2E!SNZB!mqkx4NBY<8x=lI T_7qyfXutWJ5LfPG0cI@#^vz#(