summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcus Huderle <huderlem@gmail.com>2015-02-18 21:16:59 -0800
committerMarcus Huderle <huderlem@gmail.com>2015-02-18 21:16:59 -0800
commit087c02349b906e168e17d3d1cd9a2ab892f3052a (patch)
tree71b4adea2d298647ae7e0dd13b769b7ee9741c05
parent04f44e27ae5b0adf81d6835c29efb23ed578b876 (diff)
Document more of the LoadVideo function. Add hram.
-rwxr-xr-xconstants.asm2
-rw-r--r--gfx/option_menu/blank.pngbin0 -> 75 bytes
-rwxr-xr-xhram.asm1
-rwxr-xr-xmain.asm88
4 files changed, 47 insertions, 44 deletions
diff --git a/constants.asm b/constants.asm
index fd0fbcd..221ca01 100755
--- a/constants.asm
+++ b/constants.asm
@@ -1 +1,3 @@
+INCLUDE "hram.asm"
+
INCLUDE "constants/song_constants.asm"
diff --git a/gfx/option_menu/blank.png b/gfx/option_menu/blank.png
new file mode 100644
index 0000000..961db91
--- /dev/null
+++ b/gfx/option_menu/blank.png
Binary files differ
diff --git a/hram.asm b/hram.asm
new file mode 100755
index 0000000..419d2dd
--- /dev/null
+++ b/hram.asm
@@ -0,0 +1 @@
+hLoadedROMBank EQU $FFF8 ; this is updated whenever the code switches ROM Banks
diff --git a/main.asm b/main.asm
index 53077c4..cd6d1cc 100755
--- a/main.asm
+++ b/main.asm
@@ -65,7 +65,7 @@ Start: ; 0x150
ld a, $0
ld [$4000], a ; Set bits 5 and 6 of ROM Bank Number
ld a, $1
- ld [$fff8], a
+ ld [hLoadedROMBank], a
ld a, $1
ld [$6000], a ; Enable RAM Banking Mode
ld a, $0
@@ -187,13 +187,13 @@ Func_532: ; 0x532
SwitchBank: ; 0x549
; Switches to Bank in register a and jumps to hl.
- ld [$fff8], a
+ ld [hLoadedROMBank], a
ld [$2000], a ; Load Bank
jp [hl]
Func_54f: ; 0x54f
ld e, a
- ld a, [$fff8] ; currently-loaded Bank
+ ld a, [hLoadedROMBank] ; currently-loaded Bank
cp e
jr z, .asm_570
push af
@@ -209,7 +209,7 @@ Func_54f: ; 0x54f
ld d, [hl]
ld [hl], $0
ld [$2000], a
- ld [$fff8], a
+ ld [hLoadedROMBank], a
ld [hl], d
pop de
pop hl
@@ -339,72 +339,72 @@ LoadVideoData: ; 0x6a4
ld a, [hli]
ld h, [hl]
ld l, a
-.asm_6ad
+.loadItem
ld a, [hli]
ld c, a
and [hl]
- cp $ff
+ cp $ff ; two consecutive $ff bytes terminate the array
ret z
ld a, [hli]
- ld b, a
+ ld b, a ; bc contains pointer to data to be loaded
push hl
push bc
- ld a, [hli]
+ ld a, [hli] ; a contains bank of data to be loaded
ld e, [hl]
inc hl
- ld d, [hl]
+ ld d, [hl] ; de contains destination address for data
inc hl
ld c, [hl]
inc hl
- ld b, [hl]
- inc hl
+ ld b, [hl] ; bc contains last word of data struct
+ inc hl ; this is a wasted instruction
pop hl
call Func_6cb
pop hl
ld bc, $0005
add hl, bc
- jr .asm_6ad
+ jr .loadItem
Func_6cb: ; 0x6cb
srl b
rr c
- jp c, Func_6fd
+ jp c, Func_6fd ; if lowest bit of bc is set
jp Func_6d5 ; This jumps to the next instruction... Strange.
Func_6d5: ; 0x6d5
- ld [$fffa], a
- ld a, [$fff8]
+ ld [$fffa], a ; save bank of data to be loaded
+ ld a, [hLoadedROMBank]
push af
- ld a, [$fffa]
- ld [$fff8], a
- ld [$2000], a
+ ld a, [$fffa] ; a contains bank of data to be loaded
+ ld [hLoadedROMBank], a
+ ld [$2000], a ; switch bank to the bank of data to be loaded
srl b
rr c
rl a
- and $1
- ld [$ff4f], a
-.asm_6eb
+ and $1 ; checks bit 1 of the last word in the data struct
+ ld [$ff4f], a ; set VRAM Bank
+.copyByte
ld a, [hli]
ld [de], a
inc de
dec bc
ld a, c
- or b
- jr nz, .asm_6eb
+ or b ; does bc = 0?
+ jr nz, .copyByte
xor a
- ld [$ff4f], a
+ ld [$ff4f], a ; set VRAM Bank to Bank 0
pop af
- ld [$fff8], a
- ld [$2000], a
+ ld [hLoadedROMBank], a
+ ld [$2000], a ; reload the previous ROM Bank
ret
Func_6fd: ; 0x6fd
- ld [$fffa], a
- ld a, [$fff8]
+ ld [$fffa], a ; save bank of data to be loaded
+ ld a, [hLoadedROMBank]
push af
- ld a, [$fffa]
- ld [$fff8], a
- ld [$2000], a
+ ld a, [$fffa] ; a contains bank of data to be loaded
+ ld [hLoadedROMBank], a
+ ld [$2000], a ; switch bank to the bank of data to be loaded
ld a, e
bit 6, a
jr nz, .asm_717
@@ -417,7 +417,7 @@ Func_6fd: ; 0x6fd
call Func_724
.asm_71d
pop af
- ld [$fff8], a
+ ld [hLoadedROMBank], a
ld [$2000], a
ret
@@ -427,14 +427,14 @@ Func_724: ; 0x724
set 7, a
ld [de], a
inc de
-.asm_72b
+.copyByte
ld a, [hli]
ld [de], a
inc b
dec c
ret z
bit 6, b
- jr z, .asm_72b
+ jr z, .copyByte
ret
INCBIN "baserom.gbc",$735,$916 - $735
@@ -897,10 +897,10 @@ INCBIN "baserom.gbc",$d9d,$12a1 - $d9d
Func_12a1: ; 0x12a1
ld [$fffa], a
- ld a, [$fff8]
+ ld a, [hLoadedROMBank]
push af
ld a, [$fffa]
- ld [$fff8], a
+ ld [hLoadedROMBank], a
ld [$2000], a
ld a, [hl]
and $7
@@ -943,7 +943,7 @@ Func_12a1: ; 0x12a1
jr .asm_12b5
.asm_12e5
pop af
- ld [$fff8], a
+ ld [hLoadedROMBank], a
ld [$2000], a
ret
@@ -1007,10 +1007,10 @@ Func_12f8: ; 0x12f8
Func_1353: ; 0x1353
ld [$fffa], a
- ld a, [$fff8]
+ ld a, [hLoadedROMBank]
push af
ld a, [$fffa]
- ld [$fff8], a
+ ld [hLoadedROMBank], a
ld [$2000], a
push af
push hl
@@ -1048,7 +1048,7 @@ Func_1353: ; 0x1353
ld a, [$ff9e]
ld [$ff40], a
pop af
- ld [$fff8], a
+ ld [hLoadedROMBank], a
ld [$2000], a
ret
@@ -1246,21 +1246,21 @@ Func_2043: ; 0x2043
ld d, [hl]
inc bc
nop
- ld a, [$fff8]
+ ld a, [hLoadedROMBank]
push af
ld a, $2
- ld [$fff8], a
+ ld [hLoadedROMBank], a
ld [$2000], a
call $4d17 ; todo
jr c, .asm_2084
pop af
- ld [$fff8], a
+ ld [hLoadedROMBank], a
ld [$2000], a
and a
ret
.asm_2084
pop af
- ld [$fff8], a
+ ld [hLoadedROMBank], a
ld [$2000], a
scf
ret