aboutsummaryrefslogtreecommitdiff
path: root/assets
diff options
context:
space:
mode:
authorAstatin <[email protected]>2025-03-22 01:31:25 +0900
committerAstatin <[email protected]>2025-03-22 01:32:12 +0900
commit6613a89b4d31e3718bb20d144ae93bedfeb35a78 (patch)
tree427639309824a5b98eb55493b0df169a3f032f41 /assets
parentc07b53df795c2c0eadcb4cc19c7bb83f44a10855 (diff)
Add custom DMG bootrom
Diffstat (limited to 'assets')
-rw-r--r--assets/Astatin-bootrom.gbasm157
1 files changed, 157 insertions, 0 deletions
diff --git a/assets/Astatin-bootrom.gbasm b/assets/Astatin-bootrom.gbasm
new file mode 100644
index 0000000..3fd2d23
--- /dev/null
+++ b/assets/Astatin-bootrom.gbasm
@@ -0,0 +1,157 @@
+; .INCLUDE "minimal.gbasm"
+LD SP,$fffe
+
+EmptyVRAM:
+ LD HL, $8000
+
+ EmptyVRAM.loop:
+ LD A, $00
+ LD (HL+), A
+ LD A, $A0
+ CP H
+ JR NZ, =EmptyVRAM.loop
+
+SetupLogoTile:
+ LD C, $48
+ LD DE, =Logo
+ LD HL, $8010
+ SetupLogoTile.loop:
+ LD A, (DE)
+ LD (HL+), A
+ LD (HL+), A
+ LD (HL+), A
+ LD (HL+), A
+ INC DE
+ DEC C
+ LD A, $00
+ CP C
+ JR NZ, =SetupLogoTile.loop
+
+ LD A, $01
+ LD ($8092), A
+ LD ($8093), A
+
+ LD C, $10
+ SetupHeart.loop:
+ LD A, (DE)
+ LD (HL+), A
+ LD (HL+), A
+ INC DE
+ DEC C
+ LD A, $00
+ CP C
+ JR NZ, =SetupHeart.loop
+
+LD A, $01
+
+LogoFirstLine:
+ LD HL, $9905
+ LogoFirstLine.loop:
+ LD (HL+), A
+ INC A
+ CP $0a
+ JR NZ, =LogoFirstLine.loop
+
+ LD (HL), $14
+
+LogoSecondLine:
+ LD HL, $9925
+ LogoSecondLine.loop:
+ LD (HL+), A
+ INC A
+ CP $13
+ JR NZ, =LogoSecondLine.loop
+
+LD A, $13
+LD ($98ee), A
+
+; Palette
+LD A, $fc
+LD ($47), A
+
+; LCD on
+LD A, $91
+LD ($42), A
+LD ($40), A
+
+; Sound on
+LD A, $80
+LD ($26), A
+
+; Channel 1 lengths
+LD ($11), A
+
+LD A, $f3
+; Channel 1 volume & envelope
+LD ($12), A
+
+; Panning
+LD ($25), A
+
+LD A, $77
+LD ($24), A
+
+LD C, $58
+Loop:
+ LD B, $12
+ .Wait_VBlank:
+ LD A, ($44)
+ CP $90
+ JR NZ, =.Wait_VBlank
+ DEC B
+ LD A, $00
+ CP B
+ JR NZ, =.Wait_VBlank
+
+ LD A, C
+ LD ($42), A
+ DEC C
+ CP $02
+ LD D, $83
+ CALL Z, =.sound1
+ CP $00
+ JR NZ, =Loop
+ LD D, $c1
+ CALL =.sound1
+
+ .Lock:
+ JP =End
+
+ .sound1:
+ LD E, A
+ LD A, D
+ LD ($13), A
+ LD A, $87
+ LD ($14), A
+ LD A, E
+ RET
+
+
+Logo:
+.DB $3f, $ff, $f0, $f0
+.DB $c0, $f0, $f0, $f0
+.DB $00, $00, $00, $fe
+.DB $00, $1e, $7f, $1e
+.DB $00, $00, $80, $1f
+.DB $00, $01, $07, $e1
+.DB $03, $e3, $f8, $e3
+.DB $c0, $c0, $00, $cf
+.DB $00, $01, $01, $3c
+.DB $ff, $f0, $f0, $f0
+.DB $f3, $f0, $f0, $f0
+.DB $e0, $fe, $1f, $fe
+.DB $1e, $1e, $9e, $1e
+.DB $00, $1f, $78, $1f
+.DB $79, $f9, $79, $f9
+.DB $e3, $e3, $e3, $e3
+.DB $cf, $cf, $cf, $cf
+.DB $cf, $0f, $0f, $0f
+
+Heart:
+.DB $00, $00, $00, $00, $00, $00, $00, $7c
+.DB $82, $29, $55, $45, $29, $11, $82, $7c
+
+.PADTO 0xfc
+End:
+ LD A, $01
+ LD ($50), A