summaryrefslogtreecommitdiff
path: root/main.asm
diff options
context:
space:
mode:
authoryenatch <yenatch@gmail.com>2013-11-26 06:44:05 -0500
committeryenatch <yenatch@gmail.com>2013-11-27 14:45:42 -0500
commitd2dc732600f94ff7496a12a855ca2ebabd4dfbde (patch)
treeac5192981394493af09019cc071e7b8e6f1e35fe /main.asm
parent41f149c7f13a3b54c8ecc4101258fccc5a5ab184 (diff)
split some more and recomment more home asm
Diffstat (limited to 'main.asm')
-rw-r--r--main.asm609
1 files changed, 83 insertions, 526 deletions
diff --git a/main.asm b/main.asm
index 263c95fd0..9bda9fe93 100644
--- a/main.asm
+++ b/main.asm
@@ -32,447 +32,8 @@ INCLUDE "home/text.asm"
INCLUDE "home/video.asm"
INCLUDE "home/map_objects.asm"
INCLUDE "home/sine.asm"
-
-Function1b1e: ; 1b1e
- ld [$d003], a
- xor a
- ld [DefaultFlypoint], a
- ld a, $0
- ld [$d004], a
- ld a, $7
- ld [StartFlypoint], a
- ld a, $d0
- ld [EndFlypoint], a
- ret
-; 1b35
-
-Function1b35: ; 1b35
- ld a, [DefaultFlypoint]
- and a
- ret z
- dec a
- ld [DefaultFlypoint], a
- ret
-; 1b3f
-
-Function1b3f: ; 1b3f
- push hl
- push de
- ld hl, DefaultFlypoint
- ld e, [hl]
- inc [hl]
- ld d, 0
- ld hl, MovementBuffer
- add hl, de
- ld [hl], a
- pop de
- pop hl
- ret
-; 1b50
-
-Function1b50: ; 1b50
- push af
- ld a, c
- and a
- jr nz, .asm_1b57
- pop af
- ret
-
-.asm_1b57
- pop af
-.asm_1b58
- call Function1b3f
- dec c
- jr nz, .asm_1b58
- ret
-; 1b5f
-
-Function1b5f: ; 1b5f
- push af
- ld a, b
- sub d
- ld h, $2
- jr nc, .asm_1b6a
- dec a
- cpl
- ld h, $3
-
-.asm_1b6a
- ld d, a
- ld a, c
- sub e
- ld l, $1
- jr nc, .asm_1b75
- dec a
- cpl
- ld l, $0
-
-.asm_1b75
- ld e, a
- cp d
- jr nc, .asm_1b7f
- ld a, h
- ld h, l
- ld l, a
- ld a, d
- ld d, e
- ld e, a
-
-.asm_1b7f
- pop af
- ld b, a
- ld a, h
- call Function1b92
- ld c, d
- call Function1b50
- ld a, l
- call Function1b92
- ld c, e
- call Function1b50
- ret
-; 1b92
-
-Function1b92: ; 1b92
- push de
- push hl
- ld l, b
- ld h, 0
- add hl, hl
- add hl, hl
- ld e, a
- ld d, 0
- add hl, de
- ld de, .data_1ba5
- add hl, de
- ld a, [hl]
- pop hl
- pop de
- ret
-; 1ba5
-
-.data_1ba5
- db 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19
-; 1bb1
-
-Function1bb1: ; 1bb1
- push hl
- push bc
- ld hl, $cfa1
- ld b, $8
-.asm_1bb8
- ld a, [de]
- inc de
- ld [hli], a
- dec b
- jr nz, .asm_1bb8
- ld a, $1
- ld [hli], a
- ld [hli], a
- xor a
- ld [hli], a
- ld [hli], a
- ld [hli], a
- pop bc
- pop hl
- ret
-; 1bc9
-
-Function1bc9: ; 1bc9
- callab Function241a8
- call Function1bdd
- ret
-; 1bd3
-
-Function1bd3: ; 1bd3
- callab Function241ab
- call Function1bdd
- ret
-; 1bdd
-
-Function1bdd: ; 1bdd
- push bc
- push af
- ld a, [$ffa9]
- and $f0
- ld b, a
- ld a, [hJoyPressed]
- and $f
- or b
- ld b, a
- pop af
- ld a, b
- pop bc
- ret
-; 1bee
-
-Function1bee: ; 1bee
- ld hl, $cfac
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld [hl], $ec
- ret
-; 1bf7
-
-Function1bf7: ; 1bf7
- ld hl, $cfac
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld [hl], $7f
- ret
-; 1c00
-
-Function1c00: ; 1c00
- callab Function24374
- ret
-; 1c07
-
-Function1c07: ; 0x1c07
- push af
- callab Function243e8
- pop af
- ret
-
-Function1c10: ; 0x1c10
- callab Function2446d
- ret
-
-Function1c17: ; 0x1c17
- push af
- call Function1c07
- call Function321c
- call Function1ad2
- pop af
- ret
-
-Function1c23: ; 0x1c23
- call Function1cfd
- call Function1c30
- call Function1d19
- call Function1c30
- ret
-
-Function1c30: ; 0x1c30
- call Function1c53
- inc b
- inc c
-.asm_1c35
- push bc
- push hl
-.asm_1c37
- ld a, [de]
- ld [hli], a
- dec de
- dec c
- jr nz, .asm_1c37 ; 0x1c3b $fa
- pop hl
- ld bc, $0014
- add hl, bc
- pop bc
- dec b
- jr nz, .asm_1c35 ; 0x1c44 $ef
- ret
-
-Function1c47: ; 0x1c47
- ld b, $10
- ld de, $cf81
-.asm_1c4c
- ld a, [hld]
- ld [de], a
- inc de
- dec b
- jr nz, .asm_1c4c ; 0x1c50 $fa
- ret
-
-Function1c53: ; 0x1c53
- ld a, [$cf82]
- ld b, a
- ld a, [$cf84]
- sub b
- ld b, a
- ld a, [$cf83]
- ld c, a
- ld a, [$cf85]
- sub c
- ld c, a
- ret
-; 0x1c66
-
-Function1c66: ; 1c66
- push hl
- push de
- push bc
- push af
- ld hl, $cf86
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld de, $cf91
- ld bc, $0010
- call CopyBytes
- pop af
- pop bc
- pop de
- pop hl
- ret
-; 1c7e
-
-Function1c7e: ; 1c7e
- ld hl, $cf71
- ld a, [hli]
- ld h, [hl]
- ld l, a
- inc hl
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ret
-; 1c89
-
-Function1c89: ; 1c89
- call Function1c66
- ld hl, $cf86
- ld e, [hl]
- inc hl
- ld d, [hl]
- call Function1cc6
- call GetTileCoord
- inc de
- ld a, [de]
- inc de
- ld b, a
-.asm_1c9c
- push bc
- call PlaceString
- inc de
- ld bc, $0028
- add hl, bc
- pop bc
- dec b
- jr nz, .asm_1c9c
- ld a, [$cf91]
- bit 4, a
- ret z
- call Function1cfd
- ld a, [de]
- ld c, a
- inc de
- ld b, $0
- add hl, bc
- jp PlaceString
-; 1cbb
-
-Function1cbb: ; 1cbb
- call Function1cfd
- call Function1c53
- dec b
- dec c
- jp TextBox
-; 1cc6
-
-Function1cc6: ; 1cc6
- ld a, [$cf82]
- ld b, a
- inc b
- ld a, [$cf83]
- ld c, a
- inc c
- ld a, [$cf91]
- bit 6, a
- jr nz, .asm_1cd8
- inc b
-
-.asm_1cd8
- ld a, [$cf91]
- bit 7, a
- jr z, .asm_1ce0
- inc c
-
-.asm_1ce0
- ret
-; 1ce1
-
-Function1ce1: ; 1ce1
- call Function1cfd
- ld bc, $0015
- add hl, bc
- call Function1c53
- dec b
- dec c
- call ClearBox
- ret
-; 1cf1
-
-Function1cf1: ; 1cf1
- call Function1cfd
- call Function1c53
- inc c
- inc b
- call ClearBox
- ret
-; 1cfd
-
-
-Function1cfd: ; 1cfd
- ld a, [$cf83]
- ld c, a
- ld a, [$cf82]
- ld b, a
-; 1d05
-
-
-GetTileCoord: ; 1d05
-; Return the address of TileMap(c, b) in hl.
- xor a
- ld h, a
- ld l, b
- ld a, c
- ld b, h
- ld c, l
- add hl, hl
- add hl, hl
- add hl, bc
- add hl, hl
- add hl, hl
- ld c, a
- xor a
- ld b, a
- add hl, bc
- ld bc, TileMap
- add hl, bc
- ret
-; 1d19
-
-Function1d19: ; 1d19
- ld a, [$cf83]
- ld c, a
- ld a, [$cf82]
- ld b, a
-
-GetAttrCoord: ; 1d21
-; Return the address of AttrMap(c, b) in hl.
- xor a
- ld h, a
- ld l, b
- ld a, c
- ld b, h
- ld c, l
- add hl, hl
- add hl, hl
- add hl, bc
- add hl, hl
- add hl, hl
- ld c, a
- xor a
- ld b, a
- add hl, bc
- ld bc, AttrMap
- add hl, bc
- ret
-; 1d35
-
-
+INCLUDE "home/movement.asm"
+INCLUDE "home/tilemap.asm"
INCLUDE "home/menu.asm"
INCLUDE "home/handshake.asm"
INCLUDE "home/game_time.asm"
@@ -482,22 +43,9 @@ INCLUDE "home/map.asm"
Function2d43: ; 2d43
; Inexplicably empty.
; Seen in PredefPointers.
+ rept 16
nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
+ endr
ret
; 2d54
@@ -634,8 +182,9 @@ INCLUDE "home/double_speed.asm"
ClearSprites: ; 300b
+; Erase OAM data
ld hl, Sprites
- ld b, TileMap - Sprites
+ ld b, SpritesEnd - Sprites
xor a
.loop
ld [hli], a
@@ -645,11 +194,11 @@ ClearSprites: ; 300b
; 3016
HideSprites: ; 3016
-; Set all OBJ y-positions to 160 to hide them offscreen
+; Set all OAM y-positions to 160 to hide them offscreen
ld hl, Sprites
- ld de, $0004 ; length of an OBJ struct
- ld b, $28 ; number of OBJ structs
- ld a, 160 ; y-position
+ ld de, 4 ; length of an OAM struct
+ ld b, (SpritesEnd - Sprites) / 4 ; number of OAM structs
+ ld a, 160 ; y
.loop
ld [hl], a
add hl, de
@@ -665,11 +214,11 @@ INCLUDE "home/copy2.asm"
Function309d: ; 309d
ld a, [rSVBK]
push af
- ld a, $2
+ ld a, 2
ld [rSVBK], a
ld hl, TileMap
ld de, $d000
- ld bc, $0168
+ ld bc, 360
call CopyBytes
pop af
ld [rSVBK], a
@@ -680,7 +229,7 @@ Function30b4: ; 30b4
xor a
ld [hBGMapMode], a
call Function30bf
- ld a, $1
+ ld a, 1
ld [hBGMapMode], a
ret
; 30bf
@@ -688,11 +237,11 @@ Function30b4: ; 30b4
Function30bf: ; 30bf
ld a, [rSVBK]
push af
- ld a, $2
+ ld a, 2
ld [rSVBK], a
ld hl, $d000
ld de, TileMap
- ld bc, $0168
+ ld bc, 360
call CopyBytes
pop af
ld [rSVBK], a
@@ -702,7 +251,7 @@ Function30bf: ; 30bf
CopyName1: ; 30d6
ld hl, StringBuffer2
-; 30d9
+
CopyName2: ; 30d9
.loop
ld a, [de]
@@ -766,83 +315,81 @@ INCLUDE "home/math.asm"
PrintLetterDelay: ; 313d
-; wait some frames before printing the next letter
-; the text speed setting in Options is actually a frame count
+; Wait before printing the next letter.
+
+; The text speed setting in Options is actually a frame count:
; fast: 1 frame
; mid: 3 frames
; slow: 5 frames
-; $cfcf[!0] and A or B override text speed with a one-frame delay
-; Options[4] and $cfcf[!1] disable the delay
+
+; $cfcf[!0] and A or B override text speed with a one-frame delay.
+; Options[4] and $cfcf[!1] disable the delay.
; delay off?
ld a, [Options]
- bit 4, a ; delay off
+ bit 4, a
ret nz
-
+
; non-scrolling text?
ld a, [$cfcf]
bit 1, a
ret z
-
+
push hl
push de
push bc
-
-; save oam update status
+
ld hl, hOAMUpdate
ld a, [hl]
push af
-; orginally turned oam update off, commented out
+
+; orginally turned oam update off...
; ld a, 1
ld [hl], a
-
+
; force fast scroll?
ld a, [$cfcf]
bit 0, a
jr z, .fast
-
+
; text speed
ld a, [Options]
- and a, %111 ; # frames to delay
+ and %111
jr .updatedelay
-
+
.fast
ld a, 1
+
.updatedelay
ld [TextDelayFrames], a
-
+
.checkjoypad
call GetJoypadPublic
-
+
; input override
ld a, [$c2d7]
and a
jr nz, .wait
-
-; wait one frame if holding a
- ld a, [hJoyDown] ; joypad
- bit 0, a ; A
+
+; Wait one frame if holding A or B.
+ ld a, [hJoyDown]
+ bit 0, a ; A_BUTTON
jr z, .checkb
jr .delay
-
.checkb
-; wait one frame if holding b
- bit 1, a ; B
+ bit 1, a ; B_BUTTON
jr z, .wait
-
+
.delay
call DelayFrame
jr .end
-
+
.wait
-; wait until frame counter hits 0 or the loop is broken
-; this is a bad way to do this
ld a, [TextDelayFrames]
and a
jr nz, .checkjoypad
-
+
.end
-; restore oam update flag (not touched in this fn anymore)
pop af
ld [hOAMUpdate], a
pop bc
@@ -853,9 +400,12 @@ PrintLetterDelay: ; 313d
CopyDataUntil: ; 318c
-; Copies [hl, bc) to [de, bc - hl).
-; In other words, the source data is from hl up to but not including bc,
+; Copy [hl .. bc) to [de .. de + bc - hl).
+
+; In other words, the source data is
+; from hl up to but not including bc,
; and the destination is de.
+
ld a, [hli]
ld [de], a
inc de
@@ -947,8 +497,8 @@ Function31cf: ; 31cf
StringCmp: ; 31db
-; Compare strings, c bytes in length, at de and hl.
-; Often used to compare big endian numbers in battle calculations.
+; Compare c bytes at de and hl.
+; Return z if they all match.
ld a, [de]
cp [hl]
ret nz
@@ -961,7 +511,8 @@ StringCmp: ; 31db
CompareLong: ; 31e4
-; Compare bc bytes at de and hl. Return carry if they all match.
+; Compare bc bytes at de and hl.
+; Return carry if they all match.
ld a, [de]
cp [hl]
@@ -1165,12 +716,12 @@ Function32f9: ; 32f9
ClearPalettes: ; 3317
; Make all palettes white
-; For CGB we make all the palette colors white
+; CGB: make all the palette colors white
ld a, [hCGB]
and a
jr nz, .cgb
-; In DMG mode, we can just change palettes to 0 (white)
+; DMG: just change palettes to 0 (white)
xor a
ld [rBGP], a
ld [rOBP0], a
@@ -1202,15 +753,14 @@ ClearPalettes: ; 3317
ClearSGB: ; 333e
ld b, $ff
+
GetSGBLayout: ; 3340
; load sgb packets unless dmg
-; check cgb
ld a, [hCGB]
and a
jr nz, .dosgb
-; check sgb
ld a, [hSGB]
and a
ret z
@@ -1245,26 +795,26 @@ GetHPPal: ; 3353
CountSetBits: ; 0x335f
-; function to count how many bits are set in a string of bytes
-; INPUT:
-; hl = address of string of bytes
-; b = length of string of bytes
-; OUTPUT:
-; [$d265] = number of set bits
- ld c, $0
-.loop
+; Count the number of set bits in b bytes starting from hl.
+; Return in a, c and [$d265].
+
+ ld c, 0
+.next
ld a, [hli]
ld e, a
- ld d, $8
-.innerLoop ; count how many bits are set in the current byte
+ ld d, 8
+
+.count
srl e
- ld a, $0
+ ld a, 0
adc c
ld c, a
dec d
- jr nz, .innerLoop
+ jr nz, .count
+
dec b
- jr nz, .loop
+ jr nz, .next
+
ld a, c
ld [$d265], a
ret
@@ -1284,25 +834,27 @@ GetWeekday: ; 3376
INCLUDE "home/pokedex_flags.asm"
-NamesPointerTable: ; 33ab
+NamesPointers: ; 33ab
dbw BANK(PokemonNames), PokemonNames
dbw BANK(MoveNames), MoveNames
- dbw $00, $0000
+ dbw 0, 0
dbw BANK(ItemNames), ItemNames
- dbw $00, PartyMonOT
- dbw $00, OTPartyMonOT
+ dbw 0, PartyMonOT
+ dbw 0, OTPartyMonOT
dbw BANK(TrainerClassNames), TrainerClassNames
- dbw $04, $4b52
+ dbw $04, $4b52 ; ????
; 33c3
GetName: ; 33c3
; Return name CurSpecies from name list $cf61 in StringBuffer1.
+
ld a, [hROMBank]
push af
push hl
push bc
push de
+
ld a, [$cf61]
cp 1 ; Pokemon names
jr nz, .NotPokeName
@@ -1310,7 +862,7 @@ GetName: ; 33c3
ld a, [CurSpecies]
ld [$d265], a
call GetPokemonName
- ld hl, $000b
+ ld hl, 11
add hl, de
ld e, l
ld d, h
@@ -1321,7 +873,7 @@ GetName: ; 33c3
dec a
ld e, a
ld d, 0
- ld hl, NamesPointerTable
+ ld hl, NamesPointers
add hl, de
add hl, de
add hl, de
@@ -1344,6 +896,7 @@ GetName: ; 33c3
ld [$d102], a
ld a, d
ld [$d103], a
+
pop de
pop bc
pop hl
@@ -1354,9 +907,12 @@ GetName: ; 33c3
GetNthString: ; 3411
-; Starting at hl, this function returns the start address of the ath string.
+; Return the address of the
+; ath string starting from hl.
+
and a
ret z
+
push bc
ld b, a
ld c, "@"
@@ -1373,6 +929,7 @@ GetNthString: ; 3411
GetBasePokemonName: ; 3420
; Discards gender (Nidoran).
+
push hl
call GetPokemonName