]> Joshua Wise's Git repositories - fpgaboy.git/blobdiff - bootrom.asm
Dual boot ROM support, and the first proof that cellular ram works!
[fpgaboy.git] / bootrom.asm
index 4f71d5ef23cce76e0c4de9076ed16adc1b740fee..26ba6e4ed0c6862e89d6ffc3726a681f09225b06 100644 (file)
-       SECTION "a",HOME[$00]
-
-       LD SP,$fffe             ; $0000  Setup Stack
-
-       XOR A                   ; $0003  Zero the memory from $8000-$9FFF (VRAM)
-       LD HL,$9fff             ; $0004
-Addr_0007:
-       LD [HLD],A              ; $0007
-       BIT 7,H         ; $0008
-       JR NZ, Addr_0007        ; $000a
-
-       LD HL,$ff26             ; $000c  Setup Audio
-       LD C,$11                ; $000f
-       LD A,$80                ; $0011 
-       LD [HLD],A              ; $0013
-       LD [C],A        ; $0014
-       INC C                   ; $0015
-       LD A,$f3                ; $0016
-       LD [C],A        ; $0018
-       LD [HLD],A              ; $0019
-       LD A,$77                ; $001a
-       LD [HLD],A              ; $001c
-
-       LD A,$fc                ; $001d  Setup BG palette
-       LD [$FF47],A    ; $001f
-
-       LD DE,$0104             ; $0021  Convert and load logo data from cart into Video RAM
-       LD HL,$8010             ; $0024
-Addr_0027:
-       LD A,[DE]               ; $0027
-       CALL $0095              ; $0028
-       CALL $0096              ; $002b
-       INC DE          ; $002e
-       LD A,E          ; $002f
-       CP $34          ; $0030
-       JR NZ, Addr_0027        ; $0032
-
-       LD DE,$00d8             ; $0034  Load 8 additional bytes into Video RAM
-       LD B,$08                ; $0037
-Addr_0039:
-       LD A,[DE]               ; $0039
-       INC DE          ; $003a
-       LD [HLI],A              ; $003b
-       INC HL          ; $003c
-       DEC B                   ; $003d
-       JR NZ, Addr_0039        ; $003e
-
-       LD A,$19                ; $0040  Setup background tilemap
-       LD [$9910],A    ; $0042
-       LD HL,$992f             ; $0045
-Addr_0048:
-       LD C,$0c                ; $0048
-Addr_004A:
-       DEC A                   ; $004a
-       JR Z, Addr_0055 ; $004b
-       LD [HLD],A              ; $004d
-       DEC C                   ; $004e
-       JR NZ, Addr_004A        ; $004f
-       LD L,$0f                ; $0051
-       JR Addr_0048    ; $0053
-
-       ; === Scroll logo on screen, and play logo sound===
-
-Addr_0055:
-       LD H,A          ; $0055  Initialize scroll count, H=0
-       LD A,$64                ; $0056
-       LD D,A          ; $0058  set loop count, D=$64
-       LD [$FF42],A    ; $0059  Set vertical scroll register
-       LD A,$91                ; $005b
-       LD [$FF40],A    ; $005d  Turn on LCD, showing Background
-       INC B                   ; $005f  Set B=1
-Addr_0060:
-       LD E,$02                ; $0060
-Addr_0062:
-       LD C,$0c                ; $0062
-Addr_0064:
-       LD A,[$FF44]    ; $0064  wait for screen frame
-       CP $90          ; $0066
-       JR NZ, Addr_0064        ; $0068
-       DEC C                   ; $006a
-       JR NZ, Addr_0064        ; $006b
-       DEC E                   ; $006d
-       JR NZ, Addr_0062        ; $006e
-
-       LD C,$13                ; $0070
-       INC H                   ; $0072  increment scroll count
-       LD A,H          ; $0073
-       LD E,$83                ; $0074
-       CP $62          ; $0076  $62 counts in, play sound #1
-       JR Z, Addr_0080 ; $0078
-       LD E,$c1                ; $007a
-       CP $64          ; $007c
-       JR NZ, Addr_0086        ; $007e  $64 counts in, play sound #2
-Addr_0080:
-       LD A,E          ; $0080  play sound
-       LD [C],A        ; $0081
-       INC C                   ; $0082
-       LD A,$87                ; $0083
-       LD [C],A        ; $0085
-Addr_0086:
-       LD A,[$FF42]    ; $0086
-       SUB B                   ; $0088
-       LD [$FF42],A    ; $0089  scroll logo up if B=1
-       DEC D                   ; $008b  
-       JR NZ, Addr_0060        ; $008c
-
-       DEC B                   ; $008e  set B=0 first time
-       JR NZ, Addr_00E0        ; $008f    ... next time, cause jump to "Nintendo Logo check"
-
-       LD D,$20                ; $0091  use scrolling loop to pause
-       JR Addr_0060    ; $0093
-
-       ; ==== Graphic routine ====
-
-       LD C,A          ; $0095  "Double up" all the bits of the graphics data
-       LD B,$04                ; $0096     and store in Video RAM
-Addr_0098:
-       PUSH BC         ; $0098
-       RL C                    ; $0099
-       RLA                     ; $009b
-       POP BC          ; $009c
-       RL C                    ; $009d
-       RLA                     ; $009f
-       DEC B                   ; $00a0
-       JR NZ, Addr_0098        ; $00a1
-       LD [HLI],A              ; $00a3
-       INC HL          ; $00a4
-       LD [HLI],A              ; $00a5
-       INC HL          ; $00a6
-       RET                     ; $00a7
-
-Addr_00A8:
-       ;Nintendo Logo
+       SECTION "b",HOME[$100]
+boot:  jr .running     ; $0100
+       nop             ; $0102
+       nop             ; $0103
+       ;Nintendo Logo  ; $0104
        DB $CE,$ED,$66,$66,$CC,$0D,$00,$0B,$03,$73,$00,$83,$00,$0C,$00,$0D 
        DB $00,$08,$11,$1F,$88,$89,$00,$0E,$DC,$CC,$6E,$E6,$DD,$DD,$D9,$99 
-       DB $BB,$BB,$67,$63,$6E,$0E,$EC,$CC,$DD,$DC,$99,$9F,$BB,$B9,$33,$3E 
-
-Addr_00D8:
-       ;More video data
-       DB $3C,$42,$B9,$A5,$B9,$A5,$42,$3C
-
-       ; ===== Nintendo logo comparison routine =====
-
-Addr_00E0:     
-       LD HL,$0104             ; $00e0 ; point HL to Nintendo logo in cart
-       LD DE,$00a8             ; $00e3 ; point DE to Nintendo logo in DMG rom
-
-Addr_00E6:
-       LD A,[DE]               ; $00e6
-       INC DE          ; $00e7
-       CP [HL]         ; $00e8 ;compare logo data in cart to DMG rom
-.fuq   JR NZ,.fuq              ; $00e9 ;if not a match, lock up here
-       INC HL          ; $00eb
-       LD A,L          ; $00ec
-       CP $34          ; $00ed ;do this for $30 bytes
-       JR NZ, Addr_00E6        ; $00ef
-
-       LD B,$19                ; $00f1
-       LD A,B          ; $00f3
-Addr_00F4:
-       ADD [HL]                ; $00f4
-       INC HL          ; $00f5
-       DEC B                   ; $00f6
-       JR NZ, Addr_00F4        ; $00f7
-       ADD [HL]                ; $00f9
-.fuq:  JR NZ,.fuq              ; $00fa ; if $19 + bytes from $0134-$014D  don't add to $00
-                                               ;  ... lock up
+       DB $BB,$BB,$67,$63,$6E,$0E,$EC,$CC,$DD,$DC,$99,$9F,$BB,$B9,$33,$3E
+       ;$0134 
+       DB $00,$E7,$00,$00,$00,$00,$00,$00, $00,$00,$00,$00,$00,$00,$00,$00
+       ;$0144
+       DB $00,$00,$00,$00,$00,$00,$00,$00, $00,$00,$00,$00,$00,$00,$00,$00
+.running:
+       ld a, $FF
+       ld [$FF51], A
+       ld a, $00
+       ld [$FF25], a
+.diq:  ld A, [$FF51]
+       cp 0
+       jr z, .diq
+       ld a, 0
+       LD [$FF40],A
+       jp $0000
 
-       LD A,$01                ; $00fc
-       LD [$FF50],A    ; $00fe ;turn off DMG rom
This page took 0.025988 seconds and 4 git commands to generate.