split some more and recomment more home asm

This commit is contained in:
yenatch 2013-11-26 06:44:05 -05:00
parent 41f149c7f1
commit d2dc732600
3 changed files with 523 additions and 526 deletions

221
home/movement.asm Normal file
View File

@ -0,0 +1,221 @@
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
; 0x1c30

219
home/tilemap.asm Normal file
View File

@ -0,0 +1,219 @@
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

609
main.asm
View File

@ -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