mirror of
https://github.com/thornAvery/kep-hack.git
synced 2026-02-06 15:45:24 +13:00
Merge commit '42cfe3d361'
This commit is contained in:
commit
e2c81e10f1
575 changed files with 12380 additions and 11198 deletions
|
|
@ -1,62 +1,62 @@
|
|||
FarCopyData2::
|
||||
; Identical to FarCopyData, but uses hROMBankTemp
|
||||
; as temp space instead of wBuffer.
|
||||
ld [hROMBankTemp],a
|
||||
ld a,[H_LOADEDROMBANK]
|
||||
ld [hROMBankTemp], a
|
||||
ld a, [H_LOADEDROMBANK]
|
||||
push af
|
||||
ld a,[hROMBankTemp]
|
||||
ld [H_LOADEDROMBANK],a
|
||||
ld [MBC1RomBank],a
|
||||
ld a, [hROMBankTemp]
|
||||
ld [H_LOADEDROMBANK], a
|
||||
ld [MBC1RomBank], a
|
||||
call CopyData
|
||||
pop af
|
||||
ld [H_LOADEDROMBANK],a
|
||||
ld [MBC1RomBank],a
|
||||
ld [H_LOADEDROMBANK], a
|
||||
ld [MBC1RomBank], a
|
||||
ret
|
||||
|
||||
FarCopyData3::
|
||||
; Copy bc bytes from a:de to hl.
|
||||
ld [hROMBankTemp],a
|
||||
ld a,[H_LOADEDROMBANK]
|
||||
ld [hROMBankTemp], a
|
||||
ld a, [H_LOADEDROMBANK]
|
||||
push af
|
||||
ld a,[hROMBankTemp]
|
||||
ld [H_LOADEDROMBANK],a
|
||||
ld [MBC1RomBank],a
|
||||
ld a, [hROMBankTemp]
|
||||
ld [H_LOADEDROMBANK], a
|
||||
ld [MBC1RomBank], a
|
||||
push hl
|
||||
push de
|
||||
push de
|
||||
ld d,h
|
||||
ld e,l
|
||||
ld d, h
|
||||
ld e, l
|
||||
pop hl
|
||||
call CopyData
|
||||
pop de
|
||||
pop hl
|
||||
pop af
|
||||
ld [H_LOADEDROMBANK],a
|
||||
ld [MBC1RomBank],a
|
||||
ld [H_LOADEDROMBANK], a
|
||||
ld [MBC1RomBank], a
|
||||
ret
|
||||
|
||||
FarCopyDataDouble::
|
||||
; Expand bc bytes of 1bpp image data
|
||||
; from a:hl to 2bpp data at de.
|
||||
ld [hROMBankTemp],a
|
||||
ld a,[H_LOADEDROMBANK]
|
||||
ld [hROMBankTemp], a
|
||||
ld a, [H_LOADEDROMBANK]
|
||||
push af
|
||||
ld a,[hROMBankTemp]
|
||||
ld [H_LOADEDROMBANK],a
|
||||
ld [MBC1RomBank],a
|
||||
ld a, [hROMBankTemp]
|
||||
ld [H_LOADEDROMBANK], a
|
||||
ld [MBC1RomBank], a
|
||||
.loop
|
||||
ld a,[hli]
|
||||
ld [de],a
|
||||
ld a, [hli]
|
||||
ld [de], a
|
||||
inc de
|
||||
ld [de],a
|
||||
ld [de], a
|
||||
inc de
|
||||
dec bc
|
||||
ld a,c
|
||||
ld a, c
|
||||
or b
|
||||
jr nz,.loop
|
||||
jr nz, .loop
|
||||
pop af
|
||||
ld [H_LOADEDROMBANK],a
|
||||
ld [MBC1RomBank],a
|
||||
ld [H_LOADEDROMBANK], a
|
||||
ld [MBC1RomBank], a
|
||||
ret
|
||||
|
||||
CopyVideoData::
|
||||
|
|
|
|||
2300
home/overworld.asm
2300
home/overworld.asm
File diff suppressed because it is too large
Load diff
|
|
@ -24,7 +24,7 @@ Predef::
|
|||
|
||||
ld de, .done
|
||||
push de
|
||||
jp [hl]
|
||||
jp hl
|
||||
.done
|
||||
|
||||
pop af
|
||||
|
|
|
|||
336
home/text.asm
336
home/text.asm
|
|
@ -18,7 +18,7 @@ TextBoxBorder::
|
|||
.next
|
||||
push hl
|
||||
ld a, "│"
|
||||
ld [hli],a
|
||||
ld [hli], a
|
||||
ld a, " "
|
||||
call NPlaceChar
|
||||
ld [hl], "│"
|
||||
|
|
@ -49,12 +49,12 @@ NPlaceChar::
|
|||
PlaceString::
|
||||
push hl
|
||||
PlaceNextChar::
|
||||
ld a,[de]
|
||||
ld a, [de]
|
||||
|
||||
cp "@"
|
||||
jr nz, Char4ETest
|
||||
ld b,h
|
||||
ld c,l
|
||||
ld b, h
|
||||
ld c, l
|
||||
pop hl
|
||||
ret
|
||||
|
||||
|
|
@ -62,19 +62,19 @@ Char4ETest::
|
|||
cp $4E ; next
|
||||
jr nz, .char4FTest
|
||||
ld bc, 2 * SCREEN_WIDTH
|
||||
ld a,[hFlags_0xFFF6]
|
||||
bit 2,a
|
||||
jr z,.ok
|
||||
ld bc,SCREEN_WIDTH
|
||||
ld a, [hFlags_0xFFF6]
|
||||
bit 2, a
|
||||
jr z, .ok
|
||||
ld bc, SCREEN_WIDTH
|
||||
.ok
|
||||
pop hl
|
||||
add hl,bc
|
||||
add hl, bc
|
||||
push hl
|
||||
jp PlaceNextChar_inc
|
||||
|
||||
.char4FTest
|
||||
cp $4F ; line
|
||||
jr nz,.next3
|
||||
jr nz, .next3
|
||||
pop hl
|
||||
coord hl, 1, 16
|
||||
push hl
|
||||
|
|
@ -111,17 +111,17 @@ endm
|
|||
dict $59, Char59 ; TARGET
|
||||
dict $5A, Char5A ; USER
|
||||
|
||||
ld [hli],a
|
||||
ld [hli], a
|
||||
call PrintLetterDelay
|
||||
PlaceNextChar_inc::
|
||||
inc de
|
||||
jp PlaceNextChar
|
||||
|
||||
Char00::
|
||||
ld b,h
|
||||
ld c,l
|
||||
ld b, h
|
||||
ld c, l
|
||||
pop hl
|
||||
ld de,Char00Text
|
||||
ld de, Char00Text
|
||||
dec de
|
||||
ret
|
||||
|
||||
|
|
@ -131,47 +131,47 @@ Char00Text:: ; “%d ERROR.”
|
|||
|
||||
Char52:: ; player’s name
|
||||
push de
|
||||
ld de,wPlayerName
|
||||
ld de, wPlayerName
|
||||
jr FinishDTE
|
||||
|
||||
Char53:: ; rival’s name
|
||||
push de
|
||||
ld de,wRivalName
|
||||
ld de, wRivalName
|
||||
jr FinishDTE
|
||||
|
||||
Char5D:: ; TRAINER
|
||||
push de
|
||||
ld de,Char5DText
|
||||
ld de, Char5DText
|
||||
jr FinishDTE
|
||||
|
||||
Char5C:: ; TM
|
||||
push de
|
||||
ld de,Char5CText
|
||||
ld de, Char5CText
|
||||
jr FinishDTE
|
||||
|
||||
Char5B:: ; PC
|
||||
push de
|
||||
ld de,Char5BText
|
||||
ld de, Char5BText
|
||||
jr FinishDTE
|
||||
|
||||
Char5E:: ; ROCKET
|
||||
push de
|
||||
ld de,Char5EText
|
||||
ld de, Char5EText
|
||||
jr FinishDTE
|
||||
|
||||
Char54:: ; POKé
|
||||
push de
|
||||
ld de,Char54Text
|
||||
ld de, Char54Text
|
||||
jr FinishDTE
|
||||
|
||||
Char56:: ; ……
|
||||
push de
|
||||
ld de,Char56Text
|
||||
ld de, Char56Text
|
||||
jr FinishDTE
|
||||
|
||||
Char4A:: ; PKMN
|
||||
push de
|
||||
ld de,Char4AText
|
||||
ld de, Char4AText
|
||||
jr FinishDTE
|
||||
|
||||
Char59::
|
||||
|
|
@ -180,7 +180,7 @@ Char59::
|
|||
; or
|
||||
; player active monster’s name
|
||||
; (like Char5A but flipped)
|
||||
ld a,[H_WHOSETURN]
|
||||
ld a, [H_WHOSETURN]
|
||||
xor 1
|
||||
jr MonsterNameCharsCommon
|
||||
|
||||
|
|
@ -189,26 +189,26 @@ Char5A::
|
|||
; player active monster’s name
|
||||
; or
|
||||
; enemy active monster’s name, prefixed with “Enemy ”
|
||||
ld a,[H_WHOSETURN]
|
||||
ld a, [H_WHOSETURN]
|
||||
MonsterNameCharsCommon::
|
||||
push de
|
||||
and a
|
||||
jr nz,.Enemy
|
||||
ld de,wBattleMonNick ; player active monster name
|
||||
jr nz, .Enemy
|
||||
ld de, wBattleMonNick ; player active monster name
|
||||
jr FinishDTE
|
||||
|
||||
.Enemy
|
||||
; print “Enemy ”
|
||||
ld de,Char5AText
|
||||
ld de, Char5AText
|
||||
call PlaceString
|
||||
ld h,b
|
||||
ld l,c
|
||||
ld de,wEnemyMonNick ; enemy active monster name
|
||||
ld h, b
|
||||
ld l, c
|
||||
ld de, wEnemyMonNick ; enemy active monster name
|
||||
|
||||
FinishDTE::
|
||||
call PlaceString
|
||||
ld h,b
|
||||
ld l,c
|
||||
ld h, b
|
||||
ld l, c
|
||||
pop de
|
||||
inc de
|
||||
jp PlaceNextChar
|
||||
|
|
@ -232,12 +232,12 @@ Char4AText::
|
|||
|
||||
Char55::
|
||||
push de
|
||||
ld b,h
|
||||
ld c,l
|
||||
ld hl,Char55Text
|
||||
ld b, h
|
||||
ld c, l
|
||||
ld hl, Char55Text
|
||||
call TextCommandProcessor
|
||||
ld h,b
|
||||
ld l,c
|
||||
ld h, b
|
||||
ld l, c
|
||||
pop de
|
||||
inc de
|
||||
jp PlaceNextChar
|
||||
|
|
@ -249,12 +249,12 @@ Char55Text::
|
|||
|
||||
Char5F::
|
||||
; ends a Pokédex entry
|
||||
ld [hl],"."
|
||||
ld [hl], "."
|
||||
pop hl
|
||||
ret
|
||||
|
||||
Char58:: ; prompt
|
||||
ld a,[wLinkState]
|
||||
ld a, [wLinkState]
|
||||
cp LINK_STATE_BATTLING
|
||||
jp z, .ok
|
||||
ld a, "▼"
|
||||
|
|
@ -290,14 +290,14 @@ Char51:: ; para
|
|||
|
||||
Char49::
|
||||
push de
|
||||
ld a,"▼"
|
||||
ld a, "▼"
|
||||
Coorda 18, 16
|
||||
call ProtectedDelay3
|
||||
call ManualTextScroll
|
||||
coord hl, 1, 10
|
||||
lb bc, 7, 18
|
||||
call ClearScreenArea
|
||||
ld c,20
|
||||
ld c, 20
|
||||
call DelayFrames
|
||||
pop de
|
||||
pop hl
|
||||
|
|
@ -306,7 +306,7 @@ Char49::
|
|||
jp PlaceNextChar_inc
|
||||
|
||||
Char4B::
|
||||
ld a,"▼"
|
||||
ld a, "▼"
|
||||
Coorda 18, 16
|
||||
call ProtectedDelay3
|
||||
push de
|
||||
|
|
@ -332,25 +332,25 @@ ScrollTextUpOneLine::
|
|||
coord de, 0, 13 ; empty line above text
|
||||
ld b, SCREEN_WIDTH * 3
|
||||
.copyText
|
||||
ld a,[hli]
|
||||
ld [de],a
|
||||
ld a, [hli]
|
||||
ld [de], a
|
||||
inc de
|
||||
dec b
|
||||
jr nz,.copyText
|
||||
jr nz, .copyText
|
||||
coord hl, 1, 16
|
||||
ld a, " "
|
||||
ld b,SCREEN_WIDTH - 2
|
||||
ld b, SCREEN_WIDTH - 2
|
||||
.clearText
|
||||
ld [hli],a
|
||||
ld [hli], a
|
||||
dec b
|
||||
jr nz,.clearText
|
||||
jr nz, .clearText
|
||||
|
||||
; wait five frames
|
||||
ld b,5
|
||||
ld b, 5
|
||||
.WaitFrame
|
||||
call DelayFrame
|
||||
dec b
|
||||
jr nz,.WaitFrame
|
||||
jr nz, .WaitFrame
|
||||
|
||||
ret
|
||||
|
||||
|
|
@ -361,33 +361,33 @@ ProtectedDelay3::
|
|||
ret
|
||||
|
||||
TextCommandProcessor::
|
||||
ld a,[wLetterPrintingDelayFlags]
|
||||
ld a, [wLetterPrintingDelayFlags]
|
||||
push af
|
||||
set 1,a
|
||||
ld e,a
|
||||
set 1, a
|
||||
ld e, a
|
||||
ld a, [$fff4]
|
||||
xor e
|
||||
ld [wLetterPrintingDelayFlags],a
|
||||
ld a,c
|
||||
ld [wTextDest],a
|
||||
ld a,b
|
||||
ld [wTextDest + 1],a
|
||||
ld [wLetterPrintingDelayFlags], a
|
||||
ld a, c
|
||||
ld [wTextDest], a
|
||||
ld a, b
|
||||
ld [wTextDest + 1], a
|
||||
|
||||
NextTextCommand::
|
||||
ld a,[hli]
|
||||
cp a, "@" ; terminator
|
||||
jr nz,.doTextCommand
|
||||
ld a, [hli]
|
||||
cp "@" ; terminator
|
||||
jr nz, .doTextCommand
|
||||
pop af
|
||||
ld [wLetterPrintingDelayFlags],a
|
||||
ld [wLetterPrintingDelayFlags], a
|
||||
ret
|
||||
.doTextCommand
|
||||
push hl
|
||||
cp a, $17
|
||||
cp $17
|
||||
jp z, TextCommand17
|
||||
cp a, $0e
|
||||
jp nc,TextCommand0B ; if a != 0x17 and a >= 0xE, go to command 0xB
|
||||
cp $0e
|
||||
jp nc, TextCommand0B ; if a != 0x17 and a >= 0xE, go to command 0xB
|
||||
; if a < 0xE, use a jump table
|
||||
ld hl,TextCommandJumpTable
|
||||
ld hl, TextCommandJumpTable
|
||||
push bc
|
||||
add a
|
||||
ld b, 0
|
||||
|
|
@ -406,17 +406,17 @@ NextTextCommand::
|
|||
; CC = width
|
||||
TextCommand04::
|
||||
pop hl
|
||||
ld a,[hli]
|
||||
ld e,a
|
||||
ld a,[hli]
|
||||
ld d,a
|
||||
ld a,[hli]
|
||||
ld b,a
|
||||
ld a,[hli]
|
||||
ld c,a
|
||||
ld a, [hli]
|
||||
ld e, a
|
||||
ld a, [hli]
|
||||
ld d, a
|
||||
ld a, [hli]
|
||||
ld b, a
|
||||
ld a, [hli]
|
||||
ld c, a
|
||||
push hl
|
||||
ld h,d
|
||||
ld l,e
|
||||
ld h, d
|
||||
ld l, e
|
||||
call TextBoxBorder
|
||||
pop hl
|
||||
jr NextTextCommand
|
||||
|
|
@ -425,13 +425,13 @@ TextCommand04::
|
|||
; 00{string}
|
||||
TextCommand00::
|
||||
pop hl
|
||||
ld d,h
|
||||
ld e,l
|
||||
ld h,b
|
||||
ld l,c
|
||||
ld d, h
|
||||
ld e, l
|
||||
ld h, b
|
||||
ld l, c
|
||||
call PlaceString
|
||||
ld h,d
|
||||
ld l,e
|
||||
ld h, d
|
||||
ld l, e
|
||||
inc hl
|
||||
jr NextTextCommand
|
||||
|
||||
|
|
@ -440,13 +440,13 @@ TextCommand00::
|
|||
; AAAA = address of string
|
||||
TextCommand01::
|
||||
pop hl
|
||||
ld a,[hli]
|
||||
ld e,a
|
||||
ld a,[hli]
|
||||
ld d,a
|
||||
ld a, [hli]
|
||||
ld e, a
|
||||
ld a, [hli]
|
||||
ld d, a
|
||||
push hl
|
||||
ld h,b
|
||||
ld l,c
|
||||
ld h, b
|
||||
ld l, c
|
||||
call PlaceString
|
||||
pop hl
|
||||
jr NextTextCommand
|
||||
|
|
@ -459,18 +459,18 @@ TextCommand01::
|
|||
; bits 5-7 = unknown flags
|
||||
TextCommand02::
|
||||
pop hl
|
||||
ld a,[hli]
|
||||
ld e,a
|
||||
ld a,[hli]
|
||||
ld d,a
|
||||
ld a,[hli]
|
||||
ld a, [hli]
|
||||
ld e, a
|
||||
ld a, [hli]
|
||||
ld d, a
|
||||
ld a, [hli]
|
||||
push hl
|
||||
ld h,b
|
||||
ld l,c
|
||||
ld c,a
|
||||
ld h, b
|
||||
ld l, c
|
||||
ld c, a
|
||||
call PrintBCDNumber
|
||||
ld b,h
|
||||
ld c,l
|
||||
ld b, h
|
||||
ld c, l
|
||||
pop hl
|
||||
jr NextTextCommand
|
||||
|
||||
|
|
@ -479,12 +479,12 @@ TextCommand02::
|
|||
; AAAA = new destination address
|
||||
TextCommand03::
|
||||
pop hl
|
||||
ld a,[hli]
|
||||
ld [wTextDest],a
|
||||
ld c,a
|
||||
ld a,[hli]
|
||||
ld [wTextDest + 1],a
|
||||
ld b,a
|
||||
ld a, [hli]
|
||||
ld [wTextDest], a
|
||||
ld c, a
|
||||
ld a, [hli]
|
||||
ld [wTextDest + 1], a
|
||||
ld b, a
|
||||
jp NextTextCommand
|
||||
|
||||
; repoint destination to second line of dialogue text box
|
||||
|
|
@ -499,15 +499,15 @@ TextCommand05::
|
|||
; 06
|
||||
; (no arguments)
|
||||
TextCommand06::
|
||||
ld a,[wLinkState]
|
||||
cp a,LINK_STATE_BATTLING
|
||||
jp z,TextCommand0D
|
||||
ld a,"▼"
|
||||
ld a, [wLinkState]
|
||||
cp LINK_STATE_BATTLING
|
||||
jp z, TextCommand0D
|
||||
ld a, "▼"
|
||||
Coorda 18, 16 ; place down arrow in lower right corner of dialogue text box
|
||||
push bc
|
||||
call ManualTextScroll ; blink arrow and wait for A or B to be pressed
|
||||
pop bc
|
||||
ld a," "
|
||||
ld a, " "
|
||||
Coorda 18, 16 ; overwrite down arrow with blank space
|
||||
pop hl
|
||||
jp NextTextCommand
|
||||
|
|
@ -528,7 +528,7 @@ TextCommand07::
|
|||
; 08{code}
|
||||
TextCommand08::
|
||||
pop hl
|
||||
ld de,NextTextCommand
|
||||
ld de, NextTextCommand
|
||||
push de ; return address
|
||||
jp hl
|
||||
|
||||
|
|
@ -540,25 +540,25 @@ TextCommand08::
|
|||
; bits 4-7 = how long the number is in bytes
|
||||
TextCommand09::
|
||||
pop hl
|
||||
ld a,[hli]
|
||||
ld e,a
|
||||
ld a,[hli]
|
||||
ld d,a
|
||||
ld a,[hli]
|
||||
ld a, [hli]
|
||||
ld e, a
|
||||
ld a, [hli]
|
||||
ld d, a
|
||||
ld a, [hli]
|
||||
push hl
|
||||
ld h,b
|
||||
ld l,c
|
||||
ld b,a
|
||||
and a,$0f
|
||||
ld c,a
|
||||
ld a,b
|
||||
and a,$f0
|
||||
ld h, b
|
||||
ld l, c
|
||||
ld b, a
|
||||
and $0f
|
||||
ld c, a
|
||||
ld a, b
|
||||
and $f0
|
||||
swap a
|
||||
set BIT_LEFT_ALIGN,a
|
||||
ld b,a
|
||||
ld b, a
|
||||
call PrintNumber
|
||||
ld b,h
|
||||
ld c,l
|
||||
ld b, h
|
||||
ld c, l
|
||||
pop hl
|
||||
jp NextTextCommand
|
||||
|
||||
|
|
@ -568,10 +568,10 @@ TextCommand09::
|
|||
TextCommand0A::
|
||||
push bc
|
||||
call Joypad
|
||||
ld a,[hJoyHeld]
|
||||
and a,A_BUTTON | B_BUTTON
|
||||
jr nz,.skipDelay
|
||||
ld c,30
|
||||
ld a, [hJoyHeld]
|
||||
and A_BUTTON | B_BUTTON
|
||||
jr nz, .skipDelay
|
||||
ld c, 30
|
||||
call DelayFrames
|
||||
.skipDelay
|
||||
pop bc
|
||||
|
|
@ -585,24 +585,24 @@ TextCommand0B::
|
|||
pop hl
|
||||
push bc
|
||||
dec hl
|
||||
ld a,[hli]
|
||||
ld b,a ; b = command number that got us here
|
||||
ld a, [hli]
|
||||
ld b, a ; b = command number that got us here
|
||||
push hl
|
||||
ld hl,TextCommandSounds
|
||||
ld hl, TextCommandSounds
|
||||
.loop
|
||||
ld a,[hli]
|
||||
ld a, [hli]
|
||||
cp b
|
||||
jr z,.matchFound
|
||||
jr z, .matchFound
|
||||
inc hl
|
||||
jr .loop
|
||||
.matchFound
|
||||
cp a,$14
|
||||
jr z,.pokemonCry
|
||||
cp a,$15
|
||||
jr z,.pokemonCry
|
||||
cp a,$16
|
||||
jr z,.pokemonCry
|
||||
ld a,[hl]
|
||||
cp $14
|
||||
jr z, .pokemonCry
|
||||
cp $15
|
||||
jr z, .pokemonCry
|
||||
cp $16
|
||||
jr z, .pokemonCry
|
||||
ld a, [hl]
|
||||
call PlaySound
|
||||
call WaitForSoundToFinish
|
||||
pop hl
|
||||
|
|
@ -610,7 +610,7 @@ TextCommand0B::
|
|||
jp NextTextCommand
|
||||
.pokemonCry
|
||||
push de
|
||||
ld a,[hl]
|
||||
ld a, [hl]
|
||||
call PlayCry
|
||||
pop de
|
||||
pop hl
|
||||
|
|
@ -635,27 +635,27 @@ TextCommandSounds::
|
|||
; AA = number of ellipses to draw
|
||||
TextCommand0C::
|
||||
pop hl
|
||||
ld a,[hli]
|
||||
ld d,a
|
||||
ld a, [hli]
|
||||
ld d, a
|
||||
push hl
|
||||
ld h,b
|
||||
ld l,c
|
||||
ld h, b
|
||||
ld l, c
|
||||
.loop
|
||||
ld a,"…"
|
||||
ld [hli],a
|
||||
ld a, "…"
|
||||
ld [hli], a
|
||||
push de
|
||||
call Joypad
|
||||
pop de
|
||||
ld a,[hJoyHeld] ; joypad state
|
||||
and a,A_BUTTON | B_BUTTON
|
||||
jr nz,.skipDelay ; if so, skip the delay
|
||||
ld c,10
|
||||
ld a, [hJoyHeld] ; joypad state
|
||||
and A_BUTTON | B_BUTTON
|
||||
jr nz, .skipDelay ; if so, skip the delay
|
||||
ld c, 10
|
||||
call DelayFrames
|
||||
.skipDelay
|
||||
dec d
|
||||
jr nz,.loop
|
||||
ld b,h
|
||||
ld c,l
|
||||
jr nz, .loop
|
||||
ld b, h
|
||||
ld c, l
|
||||
pop hl
|
||||
jp NextTextCommand
|
||||
|
||||
|
|
@ -675,23 +675,23 @@ TextCommand0D::
|
|||
; BB = bank
|
||||
TextCommand17::
|
||||
pop hl
|
||||
ld a,[H_LOADEDROMBANK]
|
||||
ld a, [H_LOADEDROMBANK]
|
||||
push af
|
||||
ld a,[hli]
|
||||
ld e,a
|
||||
ld a,[hli]
|
||||
ld d,a
|
||||
ld a,[hli]
|
||||
ld [H_LOADEDROMBANK],a
|
||||
ld [MBC1RomBank],a
|
||||
ld a, [hli]
|
||||
ld e, a
|
||||
ld a, [hli]
|
||||
ld d, a
|
||||
ld a, [hli]
|
||||
ld [H_LOADEDROMBANK], a
|
||||
ld [MBC1RomBank], a
|
||||
push hl
|
||||
ld l,e
|
||||
ld h,d
|
||||
ld l, e
|
||||
ld h, d
|
||||
call TextCommandProcessor
|
||||
pop hl
|
||||
pop af
|
||||
ld [H_LOADEDROMBANK],a
|
||||
ld [MBC1RomBank],a
|
||||
ld [H_LOADEDROMBANK], a
|
||||
ld [MBC1RomBank], a
|
||||
jp NextTextCommand
|
||||
|
||||
TextCommandJumpTable::
|
||||
|
|
|
|||
212
home/vcopy.asm
212
home/vcopy.asm
|
|
@ -10,27 +10,27 @@ GetRowColAddressBgMap::
|
|||
srl h
|
||||
rr a
|
||||
or l
|
||||
ld l,a
|
||||
ld a,b
|
||||
ld l, a
|
||||
ld a, b
|
||||
or h
|
||||
ld h,a
|
||||
ld h, a
|
||||
ret
|
||||
|
||||
; clears a VRAM background map with blank space tiles
|
||||
; INPUT: h - high byte of background tile map address in VRAM
|
||||
ClearBgMap::
|
||||
ld a," "
|
||||
ld a, " "
|
||||
jr .next
|
||||
ld a,l
|
||||
ld a, l
|
||||
.next
|
||||
ld de,$400 ; size of VRAM background map
|
||||
ld l,e
|
||||
ld de, $400 ; size of VRAM background map
|
||||
ld l, e
|
||||
.loop
|
||||
ld [hli],a
|
||||
ld [hli], a
|
||||
dec e
|
||||
jr nz,.loop
|
||||
jr nz, .loop
|
||||
dec d
|
||||
jr nz,.loop
|
||||
jr nz, .loop
|
||||
ret
|
||||
|
||||
; This function redraws a BG row of height 2 or a BG column of width 2.
|
||||
|
|
@ -40,76 +40,76 @@ ClearBgMap::
|
|||
; However, this function is also called repeatedly to redraw the whole screen
|
||||
; when necessary. It is also used in trade animation and elevator code.
|
||||
RedrawRowOrColumn::
|
||||
ld a,[hRedrawRowOrColumnMode]
|
||||
ld a, [hRedrawRowOrColumnMode]
|
||||
and a
|
||||
ret z
|
||||
ld b,a
|
||||
ld b, a
|
||||
xor a
|
||||
ld [hRedrawRowOrColumnMode],a
|
||||
ld [hRedrawRowOrColumnMode], a
|
||||
dec b
|
||||
jr nz,.redrawRow
|
||||
jr nz, .redrawRow
|
||||
.redrawColumn
|
||||
ld hl,wRedrawRowOrColumnSrcTiles
|
||||
ld a,[hRedrawRowOrColumnDest]
|
||||
ld e,a
|
||||
ld a,[hRedrawRowOrColumnDest + 1]
|
||||
ld d,a
|
||||
ld c,SCREEN_HEIGHT
|
||||
ld hl, wRedrawRowOrColumnSrcTiles
|
||||
ld a, [hRedrawRowOrColumnDest]
|
||||
ld e, a
|
||||
ld a, [hRedrawRowOrColumnDest + 1]
|
||||
ld d, a
|
||||
ld c, SCREEN_HEIGHT
|
||||
.loop1
|
||||
ld a,[hli]
|
||||
ld [de],a
|
||||
ld a, [hli]
|
||||
ld [de], a
|
||||
inc de
|
||||
ld a,[hli]
|
||||
ld [de],a
|
||||
ld a,BG_MAP_WIDTH - 1
|
||||
ld a, [hli]
|
||||
ld [de], a
|
||||
ld a, BG_MAP_WIDTH - 1
|
||||
add e
|
||||
ld e,a
|
||||
jr nc,.noCarry
|
||||
ld e, a
|
||||
jr nc, .noCarry
|
||||
inc d
|
||||
.noCarry
|
||||
; the following 4 lines wrap us from bottom to top if necessary
|
||||
ld a,d
|
||||
and a,$03
|
||||
or a,$98
|
||||
ld d,a
|
||||
ld a, d
|
||||
and $03
|
||||
or $98
|
||||
ld d, a
|
||||
dec c
|
||||
jr nz,.loop1
|
||||
jr nz, .loop1
|
||||
xor a
|
||||
ld [hRedrawRowOrColumnMode],a
|
||||
ld [hRedrawRowOrColumnMode], a
|
||||
ret
|
||||
.redrawRow
|
||||
ld hl,wRedrawRowOrColumnSrcTiles
|
||||
ld a,[hRedrawRowOrColumnDest]
|
||||
ld e,a
|
||||
ld a,[hRedrawRowOrColumnDest + 1]
|
||||
ld d,a
|
||||
ld hl, wRedrawRowOrColumnSrcTiles
|
||||
ld a, [hRedrawRowOrColumnDest]
|
||||
ld e, a
|
||||
ld a, [hRedrawRowOrColumnDest + 1]
|
||||
ld d, a
|
||||
push de
|
||||
call .DrawHalf ; draw upper half
|
||||
pop de
|
||||
ld a,BG_MAP_WIDTH ; width of VRAM background map
|
||||
ld a, BG_MAP_WIDTH ; width of VRAM background map
|
||||
add e
|
||||
ld e,a
|
||||
ld e, a
|
||||
; fall through and draw lower half
|
||||
|
||||
.DrawHalf
|
||||
ld c,SCREEN_WIDTH / 2
|
||||
ld c, SCREEN_WIDTH / 2
|
||||
.loop2
|
||||
ld a,[hli]
|
||||
ld [de],a
|
||||
ld a, [hli]
|
||||
ld [de], a
|
||||
inc de
|
||||
ld a,[hli]
|
||||
ld [de],a
|
||||
ld a,e
|
||||
ld a, [hli]
|
||||
ld [de], a
|
||||
ld a, e
|
||||
inc a
|
||||
; the following 6 lines wrap us from the right edge to the left edge if necessary
|
||||
and a,$1f
|
||||
ld b,a
|
||||
ld a,e
|
||||
and a,$e0
|
||||
and $1f
|
||||
ld b, a
|
||||
ld a, e
|
||||
and $e0
|
||||
or b
|
||||
ld e,a
|
||||
ld e, a
|
||||
dec c
|
||||
jr nz,.loop2
|
||||
jr nz, .loop2
|
||||
ret
|
||||
|
||||
; This function automatically transfers tile number data from the tile map at
|
||||
|
|
@ -120,52 +120,52 @@ RedrawRowOrColumn::
|
|||
; the above function, RedrawRowOrColumn, is used when walking to
|
||||
; improve efficiency.
|
||||
AutoBgMapTransfer::
|
||||
ld a,[H_AUTOBGTRANSFERENABLED]
|
||||
ld a, [H_AUTOBGTRANSFERENABLED]
|
||||
and a
|
||||
ret z
|
||||
ld hl,[sp + 0]
|
||||
ld a,h
|
||||
ld [H_SPTEMP],a
|
||||
ld a,l
|
||||
ld [H_SPTEMP + 1],a ; save stack pinter
|
||||
ld a,[H_AUTOBGTRANSFERPORTION]
|
||||
ld hl, sp + 0
|
||||
ld a, h
|
||||
ld [H_SPTEMP], a
|
||||
ld a, l
|
||||
ld [H_SPTEMP + 1], a ; save stack pinter
|
||||
ld a, [H_AUTOBGTRANSFERPORTION]
|
||||
and a
|
||||
jr z,.transferTopThird
|
||||
jr z, .transferTopThird
|
||||
dec a
|
||||
jr z,.transferMiddleThird
|
||||
jr z, .transferMiddleThird
|
||||
.transferBottomThird
|
||||
coord hl, 0, 12
|
||||
ld sp,hl
|
||||
ld a,[H_AUTOBGTRANSFERDEST + 1]
|
||||
ld h,a
|
||||
ld a,[H_AUTOBGTRANSFERDEST]
|
||||
ld l,a
|
||||
ld de,(12 * 32)
|
||||
add hl,de
|
||||
ld sp, hl
|
||||
ld a, [H_AUTOBGTRANSFERDEST + 1]
|
||||
ld h, a
|
||||
ld a, [H_AUTOBGTRANSFERDEST]
|
||||
ld l, a
|
||||
ld de, (12 * 32)
|
||||
add hl, de
|
||||
xor a ; TRANSFERTOP
|
||||
jr .doTransfer
|
||||
.transferTopThird
|
||||
coord hl, 0, 0
|
||||
ld sp,hl
|
||||
ld a,[H_AUTOBGTRANSFERDEST + 1]
|
||||
ld h,a
|
||||
ld a,[H_AUTOBGTRANSFERDEST]
|
||||
ld l,a
|
||||
ld a,TRANSFERMIDDLE
|
||||
ld sp, hl
|
||||
ld a, [H_AUTOBGTRANSFERDEST + 1]
|
||||
ld h, a
|
||||
ld a, [H_AUTOBGTRANSFERDEST]
|
||||
ld l, a
|
||||
ld a, TRANSFERMIDDLE
|
||||
jr .doTransfer
|
||||
.transferMiddleThird
|
||||
coord hl, 0, 6
|
||||
ld sp,hl
|
||||
ld a,[H_AUTOBGTRANSFERDEST + 1]
|
||||
ld h,a
|
||||
ld a,[H_AUTOBGTRANSFERDEST]
|
||||
ld l,a
|
||||
ld de,(6 * 32)
|
||||
add hl,de
|
||||
ld a,TRANSFERBOTTOM
|
||||
ld sp, hl
|
||||
ld a, [H_AUTOBGTRANSFERDEST + 1]
|
||||
ld h, a
|
||||
ld a, [H_AUTOBGTRANSFERDEST]
|
||||
ld l, a
|
||||
ld de, (6 * 32)
|
||||
add hl, de
|
||||
ld a, TRANSFERBOTTOM
|
||||
.doTransfer
|
||||
ld [H_AUTOBGTRANSFERPORTION],a ; store next portion
|
||||
ld b,6
|
||||
ld [H_AUTOBGTRANSFERPORTION], a ; store next portion
|
||||
ld b, 6
|
||||
|
||||
TransferBgRows::
|
||||
; unrolled loop and using pop for speed
|
||||
|
|
@ -202,27 +202,27 @@ TransferBgRows::
|
|||
; Copies [H_VBCOPYBGNUMROWS] rows from H_VBCOPYBGSRC to H_VBCOPYBGDEST.
|
||||
; If H_VBCOPYBGSRC is XX00, the transfer is disabled.
|
||||
VBlankCopyBgMap::
|
||||
ld a,[H_VBCOPYBGSRC] ; doubles as enabling byte
|
||||
ld a, [H_VBCOPYBGSRC] ; doubles as enabling byte
|
||||
and a
|
||||
ret z
|
||||
ld hl,[sp + 0]
|
||||
ld a,h
|
||||
ld [H_SPTEMP],a
|
||||
ld a,l
|
||||
ld [H_SPTEMP + 1],a ; save stack pointer
|
||||
ld a,[H_VBCOPYBGSRC]
|
||||
ld l,a
|
||||
ld a,[H_VBCOPYBGSRC + 1]
|
||||
ld h,a
|
||||
ld sp,hl
|
||||
ld a,[H_VBCOPYBGDEST]
|
||||
ld l,a
|
||||
ld a,[H_VBCOPYBGDEST + 1]
|
||||
ld h,a
|
||||
ld a,[H_VBCOPYBGNUMROWS]
|
||||
ld b,a
|
||||
ld hl, sp + 0
|
||||
ld a, h
|
||||
ld [H_SPTEMP], a
|
||||
ld a, l
|
||||
ld [H_SPTEMP + 1], a ; save stack pointer
|
||||
ld a, [H_VBCOPYBGSRC]
|
||||
ld l, a
|
||||
ld a, [H_VBCOPYBGSRC + 1]
|
||||
ld h, a
|
||||
ld sp, hl
|
||||
ld a, [H_VBCOPYBGDEST]
|
||||
ld l, a
|
||||
ld a, [H_VBCOPYBGDEST + 1]
|
||||
ld h, a
|
||||
ld a, [H_VBCOPYBGNUMROWS]
|
||||
ld b, a
|
||||
xor a
|
||||
ld [H_VBCOPYBGSRC],a ; disable transfer so it doesn't continue next V-blank
|
||||
ld [H_VBCOPYBGSRC], a ; disable transfer so it doesn't continue next V-blank
|
||||
jr TransferBgRows
|
||||
|
||||
|
||||
|
|
@ -238,7 +238,7 @@ VBlankCopyDouble::
|
|||
and a
|
||||
ret z
|
||||
|
||||
ld hl, [sp + 0]
|
||||
ld hl, sp + 0
|
||||
ld a, h
|
||||
ld [H_SPTEMP], a
|
||||
ld a, l
|
||||
|
|
@ -290,7 +290,7 @@ VBlankCopyDouble::
|
|||
ld a, h
|
||||
ld [H_VBCOPYDOUBLEDEST + 1], a
|
||||
|
||||
ld hl, [sp + 0]
|
||||
ld hl, sp + 0
|
||||
ld a, l
|
||||
ld [H_VBCOPYDOUBLESRC], a
|
||||
ld a, h
|
||||
|
|
@ -316,7 +316,7 @@ VBlankCopy::
|
|||
and a
|
||||
ret z
|
||||
|
||||
ld hl, [sp + 0]
|
||||
ld hl, sp + 0
|
||||
ld a, h
|
||||
ld [H_SPTEMP], a
|
||||
ld a, l
|
||||
|
|
@ -360,7 +360,7 @@ VBlankCopy::
|
|||
ld a, h
|
||||
ld [H_VBCOPYDEST + 1], a
|
||||
|
||||
ld hl, [sp + 0]
|
||||
ld hl, sp + 0
|
||||
ld a, l
|
||||
ld [H_VBCOPYSRC], a
|
||||
ld a, h
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue