summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorxCrystal <rgr.crystal@gmail.com>2018-07-01 02:09:16 +0200
committerxCrystal <rgr.crystal@gmail.com>2018-07-01 02:09:16 +0200
commite9d1642fbbe19df0dac0c2dca16ac22aed760b84 (patch)
tree7e290929824d0857be5846364da0007da0c749a5 /src
parentec76e14e6ed4506d4081eb2c1b510747a33c7a53 (diff)
Disassembly more functions from bank 0
Diffstat (limited to 'src')
-rw-r--r--src/engine/home.asm127
-rw-r--r--src/wram.asm7
2 files changed, 122 insertions, 12 deletions
diff --git a/src/engine/home.asm b/src/engine/home.asm
index 87dc7a3..14308b4 100644
--- a/src/engine/home.asm
+++ b/src/engine/home.asm
@@ -841,7 +841,9 @@ CallHL: ; 05c1 (0:05c1)
jp hl
; 0x5c2
-Func_05c2: ; 5c2 (0:5c2)
+; converts two one-digit numbers provided in a to text (ascii) format,
+; writes them to [wcaa0] and [wcaa0 + 1], and to the BGMap0 address at bc
+WriteTwoOneDigitNumbers: ; 05c2 (0:05c2)
push hl
push bc
push de
@@ -852,7 +854,7 @@ Func_05c2: ; 5c2 (0:5c2)
pop bc
call BCCoordToBGMap0Address
pop hl
- ld b, $02
+ ld b, 2
call JPHblankCopyDataHLtoDE
pop de
pop bc
@@ -860,7 +862,9 @@ Func_05c2: ; 5c2 (0:5c2)
ret
; 0x5db
-Func_05db: ; 5db (0:5db)
+; converts a one-digit number provided in the lower nybble of a to text
+; (ascii) format, and writes it to [wcaa0] and to the BGMap0 address at bc
+WriteOneDigitNumber: ; 05db (0:05db)
push hl
push bc
push de
@@ -871,7 +875,7 @@ Func_05db: ; 5db (0:5db)
pop bc
call BCCoordToBGMap0Address
pop hl
- ld b, $01
+ ld b, 1
call JPHblankCopyDataHLtoDE
pop de
pop bc
@@ -879,7 +883,9 @@ Func_05db: ; 5db (0:5db)
ret
; 0x5f4
-Func_05f4: ; 5f4 (0:5f4)
+; converts four one-digit numbers provided in h and l to text (ascii) format,
+; writes them to [wcaa0] through [wcaa0 + 3], and to the BGMap0 address at bc
+WriteFourOneDigitNumbers: ; 05f4 (0:05f4)
push hl
push bc
push de
@@ -895,7 +901,7 @@ Func_05f4: ; 5f4 (0:5f4)
pop bc
call BCCoordToBGMap0Address
pop hl
- ld b, $04
+ ld b, 4
call JPHblankCopyDataHLtoDE
pop de
pop bc
@@ -906,14 +912,14 @@ Func_05f4: ; 5f4 (0:5f4)
; given two one-digit numbers in the two nybbles of register a,
; write them in text (ascii) format to hl (most significant nybble first).
; numbers above 9 are converted to VWF tiles.
-WriteNumbersInTextFormat: ; 614 (0:614)
+WriteNumbersInTextFormat: ; 0614 (0:0614)
push af
swap a
call WriteNumberInTextFormat
pop af
; fallthrough
-; given a one-digit number in the (bottom nybble) of register a,
+; given a one-digit number in the (lower nybble) of register a,
; write it in text (ascii) format to hl.
; numbers above 9 are converted to VWF tiles.
WriteNumberInTextFormat:
@@ -927,7 +933,46 @@ WriteNumberInTextFormat:
ret
; 0x627
- INCROM $0627, $0663
+; converts the one-byte number at a to text (ascii) format,
+; and writes it to [wcaa0] and the BGMap0 address at bc
+WriteOneByteNumber: ; 0627 (0:0627)
+ push bc
+ push hl
+ ld l, a
+ ld h, $00
+ ld de, wcaa0
+ push de
+ push bc
+ ld bc, -100
+ call TwoByteNumberToText.get_digit
+ ld bc, -10
+ call TwoByteNumberToText.get_digit
+ ld bc, -1
+ call TwoByteNumberToText.get_digit
+ pop bc
+ call BCCoordToBGMap0Address
+ pop hl
+ ld b, 3
+ call JPHblankCopyDataHLtoDE
+ pop hl
+ pop bc
+ ret
+; 0x650
+
+; converts the two-byte number at hl to text (ascii) format,
+; and writes it to [wcaa0] and the BGMap0 address at bc
+WriteTwoByteNumber: ; 0650 (0:0650)
+ push bc
+ ld de, wcaa0
+ push de
+ call TwoByteNumberToText
+ call BCCoordToBGMap0Address
+ pop hl
+ ld b, 5
+ call JPHblankCopyDataHLtoDE
+ pop bc
+ ret
+; 0x663
; convert the number at hl to text (ascii) format and write it to de
TwoByteNumberToText: ; 0663 (0:0663)
@@ -1043,7 +1088,7 @@ WriteByteToBGMap0: ; 06c3 (0:06c3)
ld [hl], a
call BCCoordToBGMap0Address
pop hl
- ld b, $1
+ ld b, 1
call HblankCopyDataHLtoDE
pop bc
pop de
@@ -2086,7 +2131,67 @@ Func_0c53: ; 0c53 (0:0c53)
ret
; 0xc5f
- INCROM $0c5f, $0c91
+; returns a /= 10
+; returns carry if a % 10 >= 5
+Func_0c5f: ; 0c5f (0:0c5f)
+ push de
+ ld e, -1
+.asm_c62
+ inc e
+ sub 10
+ jr nc, .asm_c62
+ add 5
+ ld a, e
+ pop de
+ ret
+; 0xc6c
+
+; Save a pointer to a list, given at de, to wListPointer
+SetListPointer: ; 0c6c (0:0c6c)
+ push hl
+ ld hl, wListPointer
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ pop hl
+ ret
+; 0xc75
+
+; Return the current element of the list at wListPointer,
+; and advance the list to the next element
+GetNextElementOfList: ; 0c75 (0:0c75)
+ push hl
+ push de
+ ld hl, wListPointer
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld a, [de]
+ inc de
+; fallthrough
+
+SetListToNextPosition: ; 0c7f (0:0c7f)
+ ld [hl], d
+ dec hl
+ ld [hl], e
+ pop de
+ pop hl
+ ret
+; 0xc85
+
+; Set the current element of the list at wListPointer to a,
+; and advance the list to the next element
+SetNextElementOfList: ; 0c85 (0:0c85)
+ push hl
+ push de
+ ld hl, wListPointer
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld [de], a
+ inc de
+ jr SetListToNextPosition
+; 0xc91
; called at roughly 240Hz by TimerHandler
SerialTimerHandler: ; 0c91 (0:0c91)
diff --git a/src/wram.asm b/src/wram.asm
index 3506b07..835c29a 100644
--- a/src/wram.asm
+++ b/src/wram.asm
@@ -512,7 +512,12 @@ wBackgroundPalettesCGB:: ; caf0
wObjectPalettesCGB:: ; cb30
ds 8 palettes
- ds $4
+ ds $2
+
+; stores a pointer to a temporary list of elements (e.g. pointer to wDuelTempList)
+; to be read or written sequentially
+wListPointer:: ; cb72
+ ds $2
SECTION "WRAM Serial Transfer", WRAM0