summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpikalaxalt <PikalaxALT@gmail.com>2016-06-17 21:23:53 -0400
committerpikalaxalt <PikalaxALT@gmail.com>2016-06-17 21:23:53 -0400
commit789e9b343777eb9b237809864c10095cea6b06e1 (patch)
tree04f1999c1a2ba821fa1b3c32717b450bf253f660
parent5ff48b6963cfac30e08726d22a8c4f1a333185ea (diff)
Another chunk of HOME
-rw-r--r--home.asm520
-rw-r--r--home/copy2.asm136
-rw-r--r--home/init.asm2
-rw-r--r--home/map.asm32
-rw-r--r--home/map_objects.asm6
-rw-r--r--home/math.asm65
-rw-r--r--home/sram.asm36
-rw-r--r--macros/predef.asm3
-rw-r--r--main.asm17
9 files changed, 594 insertions, 223 deletions
diff --git a/home.asm b/home.asm
index 8414e373..8a3d266b 100644
--- a/home.asm
+++ b/home.asm
@@ -182,27 +182,38 @@ Function2ffe:: ; 2ffe (0:2ffe)
INCLUDE "home/item.asm"
INCLUDE "home/random.asm"
+INCLUDE "home/sram.asm"
-OpenSRAM::
- dr $30e1, $30f1
+jp_hl::
+ jp [hl]
-CloseSRAM::
- dr $30f1, $30ff
-
-Function30ff::
- dr $30ff, $311a
-
-CopyBytes::
- dr $311a, $3128
+jp_de::
+ push de
+ ret
-Function3128::
- dr $3128, $313c
+ClearSprites:: ; 30ff (0:30ff)
+ ld hl, wOAMBuffer
+ ld b, $a0
+ xor a
+.asm_3105
+ ld [hli], a
+ dec b
+ jr nz, .asm_3105
+ ret
-GetFarHalfword::
- dr $313c, $314c
+HideSprites::
+ ld hl, wOAMBuffer
+ ld de, $4
+ ld b, $28
+ ld a, $a0
+.asm_3114
+ ld [hl], a
+ add hl, de
+ dec b
+ jr nz, .asm_3114
+ ret
-ByteFill::
- dr $314c, $3158
+INCLUDE "home/copy2.asm"
BackUpTilesToBuffer::
hlcoord 0, 0
@@ -224,24 +235,477 @@ ReloadTilesFromBuffer_::
ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
jp CopyBytes
-Function317b::
- dr $317b, $31a3
+Function317b:: ; 317b (0:317b)
+ ld hl, wStringBuffer2
+.asm_317e
+ ld a, [de]
+ inc de
+ ld [hli], a
+ cp $50
+ jr nz, .asm_317e
+ ret
-Function31a3::
- dr $31a3, $31b5
+IsInArray::
+ ld b, $0
+ ld c, a
+.asm_3189
+ ld a, [hl]
+ cp $ff
+ jr z, .asm_3195
+ cp c
+ jr z, .asm_3197
+ inc b
+ add hl, de
+ jr .asm_3189
+.asm_3195
+ and a
+ ret
+.asm_3197
+ scf
+ ret
-SimpleDivide::
- dr $31b5, $31e2
+INCLUDE "home/math.asm"
-Function31e2::
- dr $31e2, $323d
+Function31e2:: ; 31e2 (0:31e2)
+ ld a, [wd199]
+ bit 4, a
+ ret nz
+ ld a, [wTextBoxFlags]
+ bit 1, a
+ ret z
+ push hl
+ push de
+ push bc
+ ld hl, hOAMUpdate
+ ld a, [hl]
+ push af
+ ld [hl], a
+ ld a, [wTextBoxFlags]
+ bit 0, a
+ jr z, .asm_3205
+ ld a, [wd199]
+ and $7
+ jr .asm_3207
+
+.asm_3205
+ ld a, $1
+.asm_3207
+ ld [wTextDelayFrames], a
+.asm_320a
+ call GetJoypad
+ ld a, [wc1d6]
+ and a
+ jr nz, .asm_3224
+ ld a, [hJoyDown]
+ bit 0, a
+ jr z, .asm_321b
+ jr .asm_321f
-PrintNum::
- dr $323d, $3449
+.asm_321b
+ bit 1, a
+ jr z, .asm_3224
+.asm_321f
+ call DelayFrame
+ jr .asm_322a
+
+.asm_3224
+ ld a, [wTextDelayFrames]
+ and a
+ jr nz, .asm_320a
+.asm_322a
+ pop af
+ ld [hOAMUpdate], a
+ pop bc
+ pop de
+ pop hl
+ ret
-Function3449::
- dr $3449, $344c
+Function3231::
+.asm_3231
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, h
+ cp b
+ jr nz, .asm_3231
+ ld a, l
+ cp c
+ jr nz, .asm_3231
+ ret
+
+PrintNum:: ; 323d (0:323d)
+ push bc
+ bit 5, b
+ jr z, .asm_324f
+ bit 7, b
+ jr nz, .asm_324a
+ bit 6, b
+ jr z, .asm_324f
+.asm_324a
+ ld a, $f0
+ ld [hli], a
+ res 5, b
+.asm_324f
+ xor a
+ ld [hPrintNum1], a
+ ld [hMultiplicand], a
+ ld [hStringCmpString2], a
+ ld a, b
+ and $f
+ cp $1
+ jr z, .asm_3277
+ cp $2
+ jr z, .asm_326e
+ ld a, [de]
+ ld [hQuotient], a
+ inc de
+ ld a, [de]
+ ld [hPrintNum3], a
+ inc de
+ ld a, [de]
+ ld [hPrintNum4], a
+ jr .asm_327a
+
+.asm_326e
+ ld a, [de]
+ ld [hStringCmpString2], a
+ inc de
+ ld a, [de]
+ ld [hPrintNum4], a
+ jr .asm_327a
+
+.asm_3277
+ ld a, [de]
+ ld [hPrintNum4], a
+.asm_327a
+ push de
+ ld d, b
+ ld a, c
+ swap a
+ and $f
+ ld e, a
+ ld a, c
+ and $f
+ ld b, a
+ ld c, $0
+ cp $2
+ jr z, .asm_32f2
+ cp $3
+ jr z, .asm_32e2
+ cp $4
+ jr z, .asm_32d1
+ cp $5
+ jr z, .asm_32c0
+ cp $6
+ jr z, .asm_32ae
+ ld a, $f
+ ld [hMultiplier], a
+ ld a, $42
+ ld [hPrintNum6], a
+ ld a, $40
+ ld [hPrintNum7], a
+ call Function3341
+ call Function33c0
+.asm_32ae
+ ld a, $1
+ ld [hPrintNum5], a
+ ld a, $86
+ ld [hPrintNum6], a
+ ld a, $a0
+ ld [hPrintNum7], a
+ call Function3341
+ call Function33c0
+.asm_32c0
+ xor a
+ ld [hRemainder], a
+ ld a, $27
+ ld [hMathBuffer], a
+ ld a, $10
+ ld [hPrintNum7], a
+ call Function3341
+ call Function33c0
+.asm_32d1
+ xor a
+ ld [hMultiplier], a
+ ld a, $3
+ ld [hPrintNum6], a
+ ld a, $e8
+ ld [hPrintNum7], a
+ call Function3341
+ call Function33c0
+.asm_32e2
+ xor a
+ ld [hMultiplier], a
+ xor a
+ ld [hMathBuffer], a
+ ld a, $64
+ ld [hPrintNum7], a
+ call Function3341
+ call Function33c0
+.asm_32f2
+ dec e
+ jr nz, .asm_32f9
+ ld a, $f6
+ ld [hPastLeadingZeroes], a
+.asm_32f9
+ ld c, $0
+ ld a, [hPrintNum4]
+.asm_32fd
+ cp $a
+ jr c, .asm_3306
+ sub $a
+ inc c
+ jr .asm_32fd
+
+.asm_3306
+ ld b, a
+ ld a, [hPrintNum1]
+ or c
+ jr nz, .asm_3311
+ call Function33ba
+ jr .asm_3323
+
+.asm_3311
+ call Function3330
+ push af
+ ld a, $f6
+ add c
+ ld [hl], a
+ pop af
+ ld [hDividend], a
+ inc e
+ dec e
+ jr nz, .asm_3323
+ inc hl
+ ld [hl], $e8
+.asm_3323
+ call Function33c0
+ call Function3330
+ ld a, $f6
+ add b
+ ld [hli], a
+ pop de
+ pop bc
+ ret
+
+Function3330:: ; 3330 (0:3330)
+ push af
+ ld a, [hPastLeadingZeroes]
+ and a
+ jr nz, .asm_333f
+ bit 5, d
+ jr z, .asm_333f
+ ld a, $f0
+ ld [hli], a
+ res 5, d
+.asm_333f
+ pop af
+ ret
+Function3341:: ; 3341 (0:3341)
+ dec e
+ jr nz, .asm_3348
+ ld a, $f6
+ ld [hProduct], a
+.asm_3348
+ ld c, $0
+.asm_334a
+ ld a, [hPrintNum5]
+ ld b, a
+ ld a, [hMultiplicand]
+ ld [hPrintNum8], a
+ cp b
+ jr c, .asm_339a
+ sub b
+ ld [hPrintNum2], a
+ ld a, [hPrintNum6]
+ ld b, a
+ ld a, [hPrintNum3]
+ ld [hPrintNum9], a
+ cp b
+ jr nc, .asm_336c
+ ld a, [hPrintNum2]
+ or $0
+ jr z, .asm_3396
+ dec a
+ ld [hPrintNum2], a
+ ld a, [hStringCmpString2]
+.asm_336c
+ sub b
+ ld [hPrintNum3], a
+ ld a, [hPrintNum7]
+ ld b, a
+ ld a, [hPrintNum4]
+ ld [hPrintNum10], a
+ cp b
+ jr nc, .asm_338c
+ ld a, [hStringCmpString2]
+ and a
+ jr nz, .asm_3387
+ ld a, [hQuotient]
+ and a
+ jr z, .asm_3392
+ dec a
+ ld [hMultiplicand], a
+ xor a
+.asm_3387
+ dec a
+ ld [hPrintNum3], a
+ ld a, [hPrintNum4]
+.asm_338c
+ sub b
+ ld [hPrintNum4], a
+ inc c
+ jr .asm_334a
+
+.asm_3392
+ ld a, [hPrintNum9]
+ ld [hStringCmpString2], a
+.asm_3396
+ ld a, [hPrintNum8]
+ ld [hPrintNum2], a
+.asm_339a
+ ld a, [hDividend]
+ or c
+ jr z, Function33ba
+ ld a, [hPrintNum1]
+ and a
+ jr nz, .asm_33ad
+ bit 5, d
+ jr z, .asm_33ad
+ ld a, $f0
+ ld [hli], a
+ res 5, d
+.asm_33ad
+ ld a, $f6
+ add c
+ ld [hl], a
+ ld [hPrintNum1], a
+ inc e
+ dec e
+ ret nz
+ inc hl
+ ld [hl], $e8
+ ret
+
+Function33ba:: ; 33ba (0:33ba)
+ bit 7, d
+ ret z
+ ld [hl], $f6
+ ret
+
+Function33c0:: ; 33c0 (0:33c0)
+ bit 7, d
+ jr nz, .asm_33cc
+ bit 6, d
+ jr z, .asm_33cc
+ ld a, [hProduct]
+ and a
+ ret z
+.asm_33cc
+ inc hl
+ ret
+
+Function33ce::
+; Print c-digit hex number from de to hl
+.asm_33ce
+ push bc
+ call Function33d7
+ pop bc
+ dec c
+ jr nz, .asm_33ce
+ ret
+
+Function33d7:: ; 33d7 (0:33d7)
+ ld a, [de]
+ swap a
+ and $f
+ call Function33e9
+ ld [hli], a
+ ld a, [de]
+ and $f
+ call Function33e9
+ ld [hli], a
+ inc de
+ ret
+
+Function33e9:: ; 33e9 (0:33e9)
+ ld bc, .digits
+ add c
+ ld c, a
+ ld a, $0
+ adc b
+ ld b, a
+ ld a, [bc]
+ ret
+
+.digits db "0123456789ABCDEF"
+
+Function3404::
+ ld [wBuffer], a
+ ld a, [hROMBank]
+ push af
+ ld a, [wBuffer]
+ rst Bankswitch
+ call PrintText
+ pop af
+ rst Bankswitch
+ ret
+
+Function3414::
+ ld a, [hROMBank]
+ push af
+ ld a, [hli]
+ rst Bankswitch
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ call jp_hl
+ pop hl
+ ld a, h
+ rst Bankswitch
+ ret
+
+Function3423::
+ ld a, [hROMBank]
+ ld [wcfd8], a
+ ld a, l
+ ld [wcfd9], a
+ ld a, h
+ ld [wcfda], a
+ ret
+
+Function3431::
+.asm_3431
+ ld a, [de]
+ cp [hl]
+ ret nz
+ inc de
+ inc hl
+ dec c
+ jr nz, .asm_3431
+ ret
+
+Function343a::
+.asm_343a
+ ld a, [de]
+ cp [hl]
+ jr nz, .asm_3447
+ inc de
+ inc hl
+ dec bc
+ ld a, b
+ or c
+ jr nz, .asm_343a
+ scf
+ ret
+
+.asm_3447
+ and a
+ ret
+
+Function3449::
+ call Function3564
WaitBGMap::
dr $344c, $3456
diff --git a/home/copy2.asm b/home/copy2.asm
index 538be572..82cb8349 100644
--- a/home/copy2.asm
+++ b/home/copy2.asm
@@ -1,135 +1,53 @@
-CopyBytes:: ; 0x3026
-; copy bc bytes from hl to de
- inc b ; we bail the moment b hits 0, so include the last run
- inc c ; same thing; include last byte
- jr .HandleLoop
-.CopyByte
+CopyBytes:: ; 311a (0:311a)
+ inc b
+ inc c
+ jr .asm_3121
+.asm_311e
ld a, [hli]
ld [de], a
inc de
-.HandleLoop
+.asm_3121
dec c
- jr nz, .CopyByte
+ jr nz, .asm_311e
dec b
- jr nz, .CopyByte
+ jr nz, .asm_311e
ret
-SwapBytes:: ; 0x3034
-; swap bc bytes between hl and de
-.Loop
- ; stash [hl] away on the stack
- ld a, [hl]
- push af
-
- ; copy a byte from [de] to [hl]
- ld a, [de]
- ld [hli], a
-
- ; retrieve the previous value of [hl]; put it in [de]
- pop af
- ld [de], a
- inc de
-
- ; handle loop stuff
- dec bc
- ld a, b
- or c
- jr nz, .Loop
- ret
-
-ByteFill:: ; 0x3041
-; fill bc bytes with the value of a, starting at hl
- inc b ; we bail the moment b hits 0, so include the last run
- inc c ; same thing; include last byte
- jr .HandleLoop
-.PutByte
- ld [hli], a
-.HandleLoop
- dec c
- jr nz, .PutByte
- dec b
- jr nz, .PutByte
- ret
-
-GetFarByte:: ; 0x304d
-; retrieve a single byte from a:hl, and return it in a.
- ; bankswitch to new bank
- ld [hBuffer], a
+SwapBytes:: ; 3128 (0:3128)
+ ld [wBuffer], a
ld a, [hROMBank]
push af
- ld a, [hBuffer]
+ ld a, [wBuffer]
rst Bankswitch
-
- ; get byte from new bank
ld a, [hl]
- ld [hBuffer], a
-
- ; bankswitch to previous bank
+ ld [wBuffer], a
pop af
rst Bankswitch
-
- ; return retrieved value in a
- ld a, [hBuffer]
+ ld a, [wBuffer]
ret
-GetFarHalfword:: ; 0x305d
-; retrieve a halfword from a:hl, and return it in hl.
- ; bankswitch to new bank
- ld [hBuffer], a
+GetFarHalfword:: ; 313c (0:313c)
+ ld [wBuffer], a
ld a, [hROMBank]
push af
- ld a, [hBuffer]
+ ld a, [wBuffer]
rst Bankswitch
-
- ; get halfword from new bank, put it in hl
ld a, [hli]
ld h, [hl]
ld l, a
-
- ; bankswitch to previous bank and return
pop af
rst Bankswitch
ret
-; 0x306b
-
-FarCopyWRAM:: ; 306b
- ld [hBuffer], a
- ld a, [rSVBK]
- push af
- ld a, [hBuffer]
- ld [rSVBK], a
-
- call CopyBytes
-
- pop af
- ld [rSVBK], a
- ret
-; 307b
-
-GetFarWRAMByte:: ; 307b
- ld [hBuffer], a
- ld a, [rSVBK]
- push af
- ld a, [hBuffer]
- ld [rSVBK], a
- ld a, [hl]
- ld [hBuffer], a
- pop af
- ld [rSVBK], a
- ld a, [hBuffer]
- ret
-; 308d
-GetFarWRAMWord:: ; 308d
- ld [hBuffer], a
- ld a, [rSVBK]
- push af
- ld a, [hBuffer]
- ld [rSVBK], a
- ld a, [hli]
- ld h, [hl]
- ld l, a
- pop af
- ld [rSVBK], a
+ByteFill:: ; 314c (0:314c)
+ inc b
+ inc c
+ jr .asm_3151
+.asm_3150
+ ld [hli], a
+.asm_3151
+ dec c
+ jr nz, .asm_3150
+ dec b
+ jr nz, .asm_3150
ret
-; 309d
diff --git a/home/init.asm b/home/init.asm
index a91f941c..a9a09142 100644
--- a/home/init.asm
+++ b/home/init.asm
@@ -69,7 +69,7 @@ Init:: ; 5d1 (0:05d1)
pop af
ld [hCGB], a
- call Function30ff
+ call ClearSprites
ld a, BANK(LoadPushOAM)
rst Bankswitch
diff --git a/home/map.asm b/home/map.asm
index 2f4a32e2..e14ffcf6 100644
--- a/home/map.asm
+++ b/home/map.asm
@@ -277,7 +277,7 @@ Function2128::
jp Function3583
Function212d::
- call Function30ff
+ call ClearSprites
call ResetBGWindow
call GetMovementPermissions
callba Function5730
@@ -583,7 +583,7 @@ Function230f:: ; 230f (0:230f)
ld a, c
dec a
ld bc, $5
- call Function31a3
+ call AddNTimes
ld bc, $2
add hl, bc
ld a, [hli]
@@ -808,7 +808,7 @@ ReadMapTriggers:: ; 248b (0:248b)
and a
ret z
ld bc, $4
- call Function31a3
+ call AddNTimes
ret
ReadMapCallbacks:: ; 24a2 (0:24a2)
@@ -823,7 +823,7 @@ ReadMapCallbacks:: ; 24a2 (0:24a2)
and a
ret z
ld bc, $3
- call Function31a3
+ call AddNTimes
ret
ReadWarps:: ; 24b9 (0:24b9)
@@ -838,7 +838,7 @@ ReadWarps:: ; 24b9 (0:24b9)
and a
ret z
ld bc, $5
- call Function31a3
+ call AddNTimes
ret
ReadCoordEvents:: ; 24d0 (0:24d0)
@@ -853,7 +853,7 @@ ReadCoordEvents:: ; 24d0 (0:24d0)
and a
ret z
ld bc, $8
- call Function31a3
+ call AddNTimes
ret
ReadSignposts:: ; 24e7 (0:24e7)
@@ -868,7 +868,7 @@ ReadSignposts:: ; 24e7 (0:24e7)
and a
ret z
ld bc, $5
- call Function31a3
+ call AddNTimes
ret
ReadObjectEvents:: ; 24fe (0:24fe)
@@ -961,7 +961,7 @@ RestoreFacingAfterWarp::
ld c, a
ld b, $0
ld a, $5
- call Function31a3
+ call AddNTimes
ld a, [hli]
ld [wda02], a
ld a, [hli]
@@ -1014,7 +1014,7 @@ GetCoordOfUpperLeftCorner:: ; 25a9 (0:25a9)
add $1
srl a
.asm_25da
- call Function31a3
+ call AddNTimes
ld a, l
ld [wOverworldMapAnchor], a
ld a, h
@@ -1938,7 +1938,7 @@ GetCoordTile:: ; 2b21 (0:2b21)
inc hl
.asm_2b41
ld a, [wd0c8]
- call Function3128
+ call SwapBytes
ret
.asm_2b48
@@ -2099,7 +2099,7 @@ FadeToMenu::
ld [hBGMapMode], a
call LoadStandardMenuDataHeader
callba Function8c3ab
- call Function30ff
+ call ClearSprites
call DisableSpriteUpdates
ret
@@ -2130,7 +2130,7 @@ ReturnToMapWithSpeechTextbox::
ld a, $1
ld [wRTCEnabled], a
call Function3449
- call Function30ff
+ call ClearSprites
call ReloadTilesetAndPalettes
hlcoord 0, 12
lb bc, 4, 18
@@ -2150,7 +2150,7 @@ ReturnToMapWithSpeechTextbox::
ReloadTilesetAndPalettes:: ; 2c87 (0:2c87)
call DisableLCD
- call Function30ff
+ call ClearSprites
callba RefreshSprites
call Functiond9e
call Functiondac
@@ -2191,7 +2191,7 @@ GetAnyMapHeaderPointer:: ; 2cc6 (0:2cc6)
dec c
ld b, $0
ld a, $9
- call Function31a3
+ call AddNTimes
ret
GetMapHeaderMember:: ; 2cdd (0:2cdd)
@@ -2277,7 +2277,7 @@ GetAnyMapBlockdataBank:: ; 2d34 (0:2d34)
ld de, $3
add hl, de
ld a, c
- call Function3128
+ call SwapBytes
rst Bankswitch
pop bc
pop de
@@ -2421,7 +2421,7 @@ LoadTilesetHeader:: ; 2dfa (0:2dfa)
ld hl, $56be
ld bc, $f
ld a, [wd082]
- call Function31a3
+ call AddNTimes
ld de, wd0c2
ld bc, $f
ld a, $5
diff --git a/home/map_objects.asm b/home/map_objects.asm
index 6197ec54..3e67a217 100644
--- a/home/map_objects.asm
+++ b/home/map_objects.asm
@@ -187,7 +187,7 @@ CheckStandingOnEntrance::
GetMapObject:: ; 176f (0:176f)
ld hl, wMapObjects
ld bc, $10
- call Function31a3
+ call AddNTimes
ld b, h
ld c, l
ret
@@ -451,7 +451,7 @@ GetInitialFacing::
add hl, de
add hl, de
ld a, BANK(SpriteMovementData)
- call Function3128
+ call SwapBytes
add a
add a
and $c
@@ -563,7 +563,7 @@ UpdateSprites:: ; 196f (0:196f)
GetObjectStruct:: ; 1982 (0:1982)
ld bc, $28
ld hl, wObjectStructs
- call Function31a3
+ call AddNTimes
ld b, h
ld c, l
ret
diff --git a/home/math.asm b/home/math.asm
index c320fd15..1be69c33 100644
--- a/home/math.asm
+++ b/home/math.asm
@@ -1,86 +1,71 @@
-AddNTimes:: ; 0x30fe
-; Add bc * a to hl.
+SkipNames::
+ ld bc, $b
and a
ret z
-.loop
+.asm_319e
add hl, bc
dec a
- jr nz, .loop
+ jr nz, .asm_319e
ret
-; 0x3105
-SimpleMultiply:: ; 3105
-; Return a * c.
+AddNTimes:: ; 31a3 (0:31a3)
and a
ret z
+.asm_31a5
+ add hl, bc
+ dec a
+ jr nz, .asm_31a5
+ ret
+SimpleMultiply::
+ and a
+ ret z
push bc
ld b, a
xor a
-.loop
+.asm_31af
add c
dec b
- jr nz, .loop
+ jr nz, .asm_31af
pop bc
ret
-; 3110
-
-SimpleDivide:: ; 3110
-; Divide a by c. Return quotient b and remainder a.
- ld b, 0
-.loop
+SimpleDivide:: ; 31b5 (0:31b5)
+ ld b, $0
+.asm_31b7
inc b
sub c
- jr nc, .loop
+ jr nc, .asm_31b7
dec b
add c
ret
-; 3119
-
-Multiply:: ; 3119
-; Multiply hMultiplicand (3 bytes) by hMultiplier. Result in hProduct.
-; All values are big endian.
+Multiply::
push hl
push bc
- callab _Multiply
+ callab Multiply_ ; 1:67bd
pop bc
pop hl
ret
-; 3124
-
-Divide:: ; 3124
-; Divide hDividend length b (max 4 bytes) by hDivisor. Result in hQuotient.
-; All values are big endian.
+Divide::
push hl
push de
push bc
- ld a, [hROMBank]
- push af
- ld a, BANK(_Divide)
- rst Bankswitch
- call _Divide
+ homecall Divide_ ; 1:681d
- pop af
- rst Bankswitch
pop bc
pop de
pop hl
ret
-; 3136
-
-SubtractSigned:: ; 3136
-; Return a - b, sign in carry.
+SubtractSigned::
sub b
ret nc
cpl
- add 1
+ add $1
scf
ret
-; 313d
diff --git a/home/sram.asm b/home/sram.asm
index 05d4fdb6..6a0ed153 100644
--- a/home/sram.asm
+++ b/home/sram.asm
@@ -1,20 +1,16 @@
-
-OpenSRAM::
- push af ; 30e1
- ld a, $1 ; 30e2
- ld [MBC3LatchClock], a ; 30e4
- ld a, $a ; 30e7
- ld [MBC3SRamEnable], a ; 30e9
- pop af ; 30ec
- ld [MBC3SRamBank], a ; 30ed
- ret ; 30f0
-; 30f1
-
-CloseSRAM::
- push af ; 30f1
- ld a, $0 ; 30f2
- ld [MBC3LatchClock], a ; 30f4
- ld [MBC3SRamEnable], a ; 30f7
- pop af ; 30fa
- ret ; 30fb
-; 30fc
+OpenSRAM:: ; 30e1 (0:30e1)
+ push af
+ ld a, $1
+ ld [MBC3LatchClock], a
+ ld a, $a
+ ld [MBC3SRamEnable], a
+ pop af
+ ld [MBC3SRamBank], a
+ ret
+CloseSRAM:: ; 30f1 (0:30f1)
+ push af
+ ld a, $0
+ ld [MBC3LatchClock], a
+ ld [MBC3SRamEnable], a
+ pop af
+ ret
diff --git a/macros/predef.asm b/macros/predef.asm
index 54f36bc0..147c6fb9 100644
--- a/macros/predef.asm
+++ b/macros/predef.asm
@@ -3,8 +3,7 @@ predef_const: MACRO
ENDM
add_predef: MACRO
-\1Predef::
- dwb \1, BANK(\1)
+\1Predef:: dab \1
ENDM
predef_id: MACRO
diff --git a/main.asm b/main.asm
index 24bd09e5..9943343e 100644
--- a/main.asm
+++ b/main.asm
@@ -18,24 +18,33 @@ StopFollow::
UpdateSprites_::
dr $5896, $58c5
Function58c5::
+
IF DEF(GOLD)
dr $58c5, $6545
-GameInit::
+GameInit:: ; 6545
dr $6545, $6551
ReanchorBGMap_NoOAMUpdate:: ; 6551
dr $6551, $65cb
LoadFonts_NoOAMUpdate:: ; 65cb
- dr $65cb, $754e
+ dr $65cb, $67bd
+Multiply_:: ; 67bd
+ dr $67bd, $681d
+Divide_:: ; 681d
+ dr $681d, $754e
ENDC
IF DEF(SILVER)
dr $58c5, $650b
-GameInit::
+GameInit:: ; 650b
dr $650b, $6517
ReanchorBGMap_NoOAMUpdate:: ; 6517
dr $6517, $6591
LoadFonts_NoOAMUpdate:: ; 6591
- dr $6591, $7514
+ dr $6591, $6783
+Multiply_:: ; 6783
+ dr $6783, $67e3
+Divide_:: ; 67e3
+ dr $67e3, $7514
ENDC
SECTION "bank2", DATA, BANK[$2]