GBC fixes: skip logo fade + set logo vram map
This commit is contained in:
@@ -38,6 +38,11 @@ GraphicB:
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
Intro:
|
Intro:
|
||||||
|
; skip fade-out on gameboy color
|
||||||
|
ldh a, [GameboyType]
|
||||||
|
cp a, $11
|
||||||
|
jr z, .setBGPalette
|
||||||
|
|
||||||
; fade bg palette
|
; fade bg palette
|
||||||
ld b, 8
|
ld b, 8
|
||||||
.fadeDelay0
|
.fadeDelay0
|
||||||
@@ -64,6 +69,7 @@ Intro:
|
|||||||
jr nz, .fadeDelay2
|
jr nz, .fadeDelay2
|
||||||
|
|
||||||
; load bg and obj palette [0=black, 1=dark gray, 2=light gray, 3=white]
|
; load bg and obj palette [0=black, 1=dark gray, 2=light gray, 3=white]
|
||||||
|
.setBGPalette
|
||||||
ld a, %11100100
|
ld a, %11100100
|
||||||
ldh [rBGP], a
|
ldh [rBGP], a
|
||||||
|
|
||||||
@@ -80,20 +86,42 @@ Intro:
|
|||||||
cp $34
|
cp $34
|
||||||
jr nz, .logoloop
|
jr nz, .logoloop
|
||||||
|
|
||||||
; move all map indices to block 1
|
; display logo in map 0 from block 1
|
||||||
ld hl, _SCRN0
|
ld hl, _SCRN0
|
||||||
ld bc, 18 * 32
|
ld d, $80
|
||||||
.copy
|
ld bc, 8 * 32 + 4
|
||||||
|
call VideoMemorySet
|
||||||
|
|
||||||
|
ld b, 12
|
||||||
|
.logoLine1
|
||||||
ldh a, [rSTAT]
|
ldh a, [rSTAT]
|
||||||
and a, STATF_BUSY
|
and a, STATF_BUSY
|
||||||
jr nz, .copy
|
jr nz, .logoLine1
|
||||||
ld a, [hl]
|
inc d
|
||||||
add a, $80
|
ld [hl], d
|
||||||
ld [hl+], a
|
inc hl
|
||||||
dec bc
|
dec b
|
||||||
ld a, b
|
jr nz, .logoLine1
|
||||||
or c
|
|
||||||
jr nz, .copy
|
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
|
; display nintendo logo from new map
|
||||||
ld a, LCDCF_ON | LCDCF_BGON | LCDCF_BG9800
|
ld a, LCDCF_ON | LCDCF_BGON | LCDCF_BG9800
|
||||||
|
|||||||
104
Code/main.asm
104
Code/main.asm
@@ -7,8 +7,10 @@ EMPTY_BG_TILE EQU 17
|
|||||||
ANIMATE EQU %01
|
ANIMATE EQU %01
|
||||||
STEP EQU %10
|
STEP EQU %10
|
||||||
|
|
||||||
|
EXPORT GameboyType
|
||||||
SECTION "Main Memory", HRAM
|
SECTION "Main Memory", HRAM
|
||||||
Control: ds 1
|
Control: ds 1
|
||||||
|
GameboyType: ds 1
|
||||||
|
|
||||||
SECTION "Header", ROM0[$100]
|
SECTION "Header", ROM0[$100]
|
||||||
EntryPoint:
|
EntryPoint:
|
||||||
@@ -18,58 +20,10 @@ REPT $150 - $104
|
|||||||
db 0
|
db 0
|
||||||
ENDR
|
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]
|
SECTION "Main", ROM0[$150]
|
||||||
Start:
|
Start:
|
||||||
|
ldh [GameboyType], a
|
||||||
|
|
||||||
; enable sound
|
; enable sound
|
||||||
ld a, $80
|
ld a, $80
|
||||||
ld [rNR52], a ; sound ON
|
ld [rNR52], a ; sound ON
|
||||||
@@ -233,3 +187,53 @@ FREQUENCY = 220
|
|||||||
ldh [rLCDC], a
|
ldh [rLCDC], a
|
||||||
|
|
||||||
jr .mainloop
|
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
|
||||||
|
|||||||
Reference in New Issue
Block a user