diff options
author | U-Fish-PC\Daniel <corrnondacqb@yahoo.com> | 2014-05-22 18:13:20 -0400 |
---|---|---|
committer | U-Fish-PC\Daniel <corrnondacqb@yahoo.com> | 2014-05-22 18:13:20 -0400 |
commit | 15427f532085846ab6b51719be687951a094cb6c (patch) | |
tree | edea9b189e91641a12dd521756894df84aeeace7 /engine/trade.asm | |
parent | ea3ba4cde3706b7c77efb705555ec0c86321cbe2 (diff) |
Pull a lot of engine out of main.asm
Diffstat (limited to 'engine/trade.asm')
-rwxr-xr-x | engine/trade.asm | 770 |
1 files changed, 770 insertions, 0 deletions
diff --git a/engine/trade.asm b/engine/trade.asm new file mode 100755 index 00000000..fa579cc7 --- /dev/null +++ b/engine/trade.asm @@ -0,0 +1,770 @@ +Func_410e2: ; 410e2 (10:50e2) + ld a, [wWhichTrade] ; $cd3d + ld [$cd5e], a + ld a, [wTrainerEngageDistance] + ld [$cd5f], a + ld de, PointerIDs_41138 ; $5138 + jr Func_41102 + +Func_410f3: ; 410f3 (10:50f3) + ld a, [wTrainerEngageDistance] + ld [$cd5e], a + ld a, [wTrainerSpriteOffset] + ld [$cd5f], a + ld de, PointerIDs_41149 + +Func_41102: ; 41102 (10:5102) + ld a, [W_OPTIONS] ; $d355 + push af + ld a, [$ffaf] + push af + ld a, [$ffae] + push af + xor a + ld [W_OPTIONS], a ; $d355 + ld [$ffaf], a + ld [$ffae], a + push de +.asm_41115 + pop de + ld a, [de] + cp $ff + jr z, .asm_4112d + inc de + push de + ld hl, PointerTable_4115f ; $515f + add a + ld c, a + ld b, $0 + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + ld de, .asm_41115 ; $5115 + push de + jp [hl] +.asm_4112d + pop af + ld [$ffae], a + pop af + ld [$ffaf], a + pop af + ld [W_OPTIONS], a ; $d355 + ret + +; these bytes refer to the $00th through $10th pointer of PointerTable_4115f +PointerIDs_41138: ; 41138 (10:5138) + db $00,$01,$02,$03,$05,$07,$08,$09,$0A,$0B,$06,$08,$02,$04,$07,$0E,$FF + +PointerIDs_41149: ; 41149 (10:5149) + db $00,$08,$0D,$0B,$10,$05,$10,$08,$02,$04,$0F,$01,$02,$03,$10,$06,$10,$07,$08,$09,$0E,$FF + +PointerTable_4115f: ; 4115f (10:515f) + dw LoadTradingGFXAndMonNames + dw Func_41245 + dw Func_41298 + dw Func_412d2 + dw Func_41336 + dw Func_41376 + dw Func_413c6 + dw Func_41181 + dw Func_415c8 + dw PrintTradeWentToText + dw PrintTradeForSendsText + dw PrintTradeFarewellText + dw PrintTradeTakeCareText + dw PrintTradeWillTradeText + dw Func_4123b + dw Func_415df + dw Func_41217 + +Func_41181: ; 41181 (10:5181) + ld c, $64 + jp DelayFrames + +Func_41186: ; 41186 (10:5186) + ld a, $1 + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba + call Delay3 + xor a + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba + ret + +Delay50: ; 41191 (10:5191) + ld c, $50 + jp DelayFrames + +Func_41196: ; 41196 (10:5196) + ld hl, wTileMap + ld bc, $168 + ld a, $7f + jp FillMemory + +LoadTradingGFXAndMonNames: ; 411a1 (10:51a1) + call Func_41196 + call DisableLCD + ld hl, TradingAnimationGraphics ; $69be + ld de, $9310 + ld bc, $310 + ld a, BANK(TradingAnimationGraphics) + call FarCopyData2 + ld hl, TradingAnimationGraphics2 ; $6cce + ld de, $87c0 + ld bc, $40 + ld a, BANK(TradingAnimationGraphics2) + call FarCopyData2 + ld hl, $9800 + ld bc, $800 + ld a, $7f + call FillMemory + call CleanLCD_OAM + ld a, $ff + ld [$cfcb], a + ld hl, $d730 + set 6, [hl] + ld a, [$cf1b] + and a + ld a, $e4 + jr z, .asm_411e5 + ld a, $f0 +.asm_411e5 + ld [rOBP0], a ; $ff48 + call EnableLCD + xor a + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba + ld a, [wWhichTrade] ; $cd3d + ld [$d11e], a + call GetMonName + ld hl, $cd6d + ld de, $cf4b + ld bc, $b + call CopyData + ld a, [$cd3e] + ld [$d11e], a + jp GetMonName + +Func_4120b: ; 4120b (10:520b) + ld a, $d0 + ld [rOBP1], a ; $ff49 + ld b, BANK(Func_7176c) + ld hl, Func_7176c + jp Bankswitch + +Func_41217: ; 41217 (10:5217) + ld hl, W_PLAYERNAME + ld de, wHPBarMaxHP + ld bc, $000b + call CopyData + ld hl, W_GRASSRATE + ld de, W_PLAYERNAME + ld bc, $000b + call CopyData + ld hl, wHPBarMaxHP + ld de, W_GRASSRATE + ld bc, $000b + jp CopyData + +Func_4123b: ; 4123b (10:523b) + xor a + call LoadGBPal + ld hl, $d730 + res 6, [hl] + ret + +Func_41245: ; 41245 (10:5245) + ld a, $ab + ld [rLCDC], a ; $ff40 + ld a, $50 + ld [$ffb0], a + ld a, $86 + ld [rWX], a ; $ff4b + ld [$ffae], a + xor a + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba + FuncCoord 4, 0 ; $c3a4 + ld hl, Coord + ld b, $6 + ld c, $a + call TextBoxBorder + call Func_42769 + ld b, $98 + call CopyScreenTileBufferToVRAM + call ClearScreen + ld a, [wWhichTrade] ; $cd3d + call Func_415a4 + ld a, $7e +.asm_41273 + push af + call DelayFrame + pop af + ld [rWX], a ; $ff4b + ld [$ffae], a + dec a + dec a + and a + jr nz, .asm_41273 + call Delay50 + ld a, $ad + call Func_41676 + ld a, $aa + call Func_41676 + ld a, [wWhichTrade] ; $cd3d + call PlayCry + xor a + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba + ret + +Func_41298: ; 41298 (10:5298) + call Func_41196 + ld b, $98 + call CopyScreenTileBufferToVRAM + ld b, $8 + call GoPAL_SET + ld hl, $9c8c + call Func_414ae + ld a, $a0 + ld [$ffae], a + call DelayFrame + ld a, $8b + ld [rLCDC], a ; $ff40 + FuncCoord 6, 2 ; $c3ce + ld hl, Coord + ld b, $7 + call Func_41842 + call Func_41186 + ld a, (SFX_02_3d - SFX_Headers_02) / 3 + call PlaySound + ld c, $14 +.asm_412c8 + ld a, [$ffae] + add $4 + ld [$ffae], a + dec c + jr nz, .asm_412c8 + ret + +Func_412d2: ; 412d2 (10:52d2) + ld a, $ab + call Func_41676 + ld c, $a + call DelayFrames + ld a, $e4 + ld [rOBP0], a ; $ff48 + xor a + ld [$d09f], a + ld bc, $2060 +.asm_412e7 + push bc + xor a + ld de, UnknownOAM_4132e ; $532e + call WriteOAMBlock + ld a, [$d09f] + xor $1 + ld [$d09f], a + add $7e + ld hl, $c302 + ld de, $4 + ld c, e +.asm_41300 + ld [hl], a + add hl, de + dec c + jr nz, .asm_41300 + call Delay3 + pop bc + ld a, c + add $4 + ld c, a + cp $a0 + jr nc, .asm_41318 + ld a, (SFX_02_3c - SFX_Headers_02) / 3 + call PlaySound + jr .asm_412e7 +.asm_41318 + call CleanLCD_OAM + ld a, $1 + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba + call ClearScreen + ld b, $98 + call CopyScreenTileBufferToVRAM + call Delay3 + xor a + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba + ret + +UnknownOAM_4132e: ; 4132e (10:532e) + db $7E,$00,$7E,$20 + db $7E,$40,$7E,$60 + +Func_41336: ; 41336 (10:5336) + ld a, $ac + call Func_41676 + call Func_415c8 + FuncCoord 4, 10 ; $c46c + ld hl, Coord + ld b, $6 + ld c, $a + call TextBoxBorder + call Func_427a7 + call Func_41186 + ld a, $1 + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba + ld a, [$cd3e] + call Func_415a4 + ld a, $ad + call Func_41676 + ld a, $1 + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba + ld a, [$cd3e] + call PlayCry + call Func_41181 + FuncCoord 4, 10 ; $c46c + ld hl, Coord + ld bc, $80c + call ClearScreenArea + jp PrintTradeTakeCareText + +Func_41376: ; 41376 (10:5376) + call Func_41411 + ld a, $1 + ld [$d08a], a + ld a, $e4 + ld [rOBP0], a ; $ff48 + ld a, $54 + ld [W_BASECOORDX], a ; $d081 + ld a, $1c + ld [W_BASECOORDY], a ; $d082 + ld a, [$cd5e] + ld [$cd5d], a + call Func_41505 + call Func_4142d + call Func_41186 + call Func_4149f + ld hl, $9c8c + call Func_414ae + ld b, $6 + call Func_414c5 + ld a, $1 + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba + call Func_4149f + ld b, $4 + call Func_414c5 + call Func_4145c + ld b, $6 + call Func_414c5 + xor a + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba + call Func_41525 + jp CleanLCD_OAM + +Func_413c6: ; 413c6 (10:53c6) + call Func_41411 + xor a + ld [$d08a], a + ld a, $64 + ld [W_BASECOORDX], a ; $d081 + ld a, $44 + ld [W_BASECOORDY], a ; $d082 + ld a, [$cd5f] + ld [$cd5d], a + call Func_41505 + call Func_4145c + call Func_41186 + call Func_4149f + ld hl, $9c94 + call Func_414ae + call Func_41525 + ld b, $6 + call Func_414c5 + ld a, $1 + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba + call Func_4149f + ld b, $4 + call Func_414c5 + call Func_4142d + ld b, $6 + call Func_414c5 + xor a + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba + jp CleanLCD_OAM + +Func_41411: ; 41411 (10:5411) + ld a, $1 + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba + call ClearScreen + xor a + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba + call Func_4120b + call DelayFrame + ld a, $ab + ld [rLCDC], a ; $ff40 + xor a + ld [$ffae], a + ld a, $90 + ld [$ffb0], a + ret + +Func_4142d: ; 4142d (10:542d) + call Func_41196 + FuncCoord 11, 4 ; $c3fb + ld hl, Coord + ld a, $5d + ld [hli], a + ld a, $5e + ld c, $8 +.asm_4143a + ld [hli], a + dec c + jr nz, .asm_4143a + FuncCoord 5, 3 ; $c3e1 + ld hl, Coord + ld b, $6 + call Func_41842 + FuncCoord 4, 12 ; $c494 + ld hl, Coord + ld b, $2 + ld c, $7 + call TextBoxBorder + FuncCoord 5, 14 ; $c4bd + ld hl, Coord + ld de, W_PLAYERNAME ; $d158 + call PlaceString + jp DelayFrame + +Func_4145c: ; 4145c (10:545c) + call Func_41196 + FuncCoord 0, 4 ; $c3f0 + ld hl, Coord + ld a, $5e + ld c, $e +.asm_41466 + ld [hli], a + dec c + jr nz, .asm_41466 + ld a, $5f + ld [hl], a + ld de, $14 + add hl, de + ld a, $61 + ld [hl], a + add hl, de + ld [hl], a + add hl, de + ld [hl], a + add hl, de + ld [hl], a + add hl, de + ld a, $60 + ld [hld], a + ld a, $5d + ld [hl], a + FuncCoord 7, 8 ; $c447 + ld hl, Coord + ld b, $6 + call Func_41842 + FuncCoord 6, 0 ; $c3a6 + ld hl, Coord + ld b, $2 + ld c, $7 + call TextBoxBorder + FuncCoord 7, 2 ; $c3cf + ld hl, Coord + ld de, W_GRASSRATE ; $d887 + call PlaceString + jp DelayFrame + +Func_4149f: ; 4149f (10:549f) + call Func_41196 + FuncCoord 0, 4 ; $c3f0 + ld hl, Coord + ld a, $5e + ld c, $14 +.asm_414a9 + ld [hli], a + dec c + jr nz, .asm_414a9 + ret + +Func_414ae: ; 414ae (10:54ae) + push hl + FuncCoord 0, 4 ; $c3f0 + ld hl, Coord + call ScheduleRowRedrawHelper + pop hl + ld a, h + ld [$ffd2], a + ld a, l + ld [H_SCREENEDGEREDRAWADDR], a ; $ffd1 + ld a, $2 + ld [H_SCREENEDGEREDRAW], a ; $ffd0 + ld c, $a + jp DelayFrames + +Func_414c5: ; 414c5 (10:54c5) + ld a, [$d08a] + ld e, a + ld d, $8 +.asm_414cb + ld a, e + dec a + jr z, .asm_414d5 + ld a, [$ffae] + sub $2 + jr .asm_414d9 +.asm_414d5 + ld a, [$ffae] + add $2 +.asm_414d9 + ld [$ffae], a + call DelayFrame + dec d + jr nz, .asm_414cb + call Func_414e8 + dec b + jr nz, Func_414c5 + ret + +Func_414e8: ; 414e8 (10:54e8) + push de + push bc + push hl + ld a, [rBGP] ; $ff47 + xor $3c + ld [rBGP], a ; $ff47 + ld hl, $c302 + ld de, $4 + ld c, $14 +.asm_414f9 + ld a, [hl] + xor $40 + ld [hl], a + add hl, de + dec c + jr nz, .asm_414f9 + pop hl + pop bc + pop de + ret + +Func_41505: ; 41505 (10:5505) + callba Func_71882 + call Func_41558 + +Func_41510: ; 41510 (10:5510) + ld hl, wOAMBuffer + ld c, $14 +.asm_41515 + ld a, [W_BASECOORDY] ; $d082 + add [hl] + ld [hli], a + ld a, [W_BASECOORDX] ; $d081 + add [hl] + ld [hli], a + inc hl + inc hl + dec c + jr nz, .asm_41515 + ret + +Func_41525: ; 41525 (10:5525) + ld a, [$d08a] + and a + jr z, .asm_41536 + ld bc, $400 + call .asm_4153f + ld bc, $a + jr .asm_4153f +.asm_41536 + ld bc, $f6 + call .asm_4153f + ld bc, $fc00 +.asm_4153f + ld a, b + ld [W_BASECOORDX], a ; $d081 + ld a, c + ld [W_BASECOORDY], a ; $d082 + ld d, $4 +.asm_41549 + call Func_41510 + call Func_414e8 + ld c, $8 + call DelayFrames + dec d + jr nz, .asm_41549 + ret + +Func_41558: ; 41558 (10:5558) + ld hl, OAMPointers_41574 ; $5574 + ld c, $4 + xor a +.asm_4155e + push bc + ld e, [hl] + inc hl + ld d, [hl] + inc hl + ld c, [hl] + inc hl + ld b, [hl] + inc hl + push hl + inc a + push af + call WriteOAMBlock + pop af + pop hl + pop bc + dec c + jr nz, .asm_4155e + ret + +OAMPointers_41574: ; 41574 (10:5574) + dw UnknownOAM_41584 + db $08,$08 + dw UnknownOAM_4158c + db $18,$08 + dw UnknownOAM_41594 + db $08,$18 + dw UnknownOAM_4159c + db $18,$18 + +UnknownOAM_41584: ; 41584 (10:5584) + db $38,$10,$39,$10 + db $3A,$10,$3B,$10 + +UnknownOAM_4158c: ; 4158c (10:558c) + db $39,$30,$38,$30 + db $3B,$30,$3A,$30 + +UnknownOAM_41594: ; 41594 (10:5594) + db $3A,$50,$3B,$50 + db $38,$50,$39,$50 + +UnknownOAM_4159c: ; 4159c (10:559c) + db $3B,$70,$3A,$70 + db $39,$70,$38,$70 + +Func_415a4: ; 415a4 (10:55a4) + ld [$cf91], a + ld [$d0b5], a + ld [$cf1d], a + ld b, $b + ld c, $0 + call GoPAL_SET + ld a, [H_AUTOBGTRANSFERENABLED] ; $ffba + xor $1 + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba + call GetMonHeader + FuncCoord 7, 2 ; $c3cf + ld hl, Coord + call LoadFlippedFrontSpriteByMonIndex + ld c, $a + jp DelayFrames + +Func_415c8: ; 415c8 (10:55c8) + ld a, $1 + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba + call ClearScreen + ld a, $e3 + ld [rLCDC], a ; $ff40 + ld a, $7 + ld [rWX], a ; $ff4b + xor a + ld [$ffb0], a + ld a, $90 + ld [$ffae], a + ret + +Func_415df: ; 415df (10:55df) + ld c, $32 + call DelayFrames +.asm_415e4 + call DelayFrame + ld a, [rWX] ; $ff4b + inc a + inc a + ld [rWX], a ; $ff4b + cp $a1 + jr nz, .asm_415e4 + call Func_41196 + ld c, $a + call DelayFrames + ld a, $7 + ld [rWX], a ; $ff4b + ret + +PrintTradeWentToText: ; 415fe (10:55fe) + ld hl, TradeWentToText + call PrintText + ld c, $c8 + call DelayFrames + jp Func_415df + +TradeWentToText: ; 4160c (10:560c) + TX_FAR _TradeWentToText + db "@" + +PrintTradeForSendsText: ; 41611 (10:5611) + ld hl, TradeForText + call PrintText + call Delay50 + ld hl, TradeSendsText + call PrintText + jp Delay50 + +TradeForText: ; 41623 (10:5623) + TX_FAR _TradeForText + db "@" + +TradeSendsText: ; 41628 (10:5628) + TX_FAR _TradeSendsText + db "@" + +PrintTradeFarewellText: ; 4162d (10:562d) + ld hl, TradeWavesFarewellText + call PrintText + call Delay50 + ld hl, TradeTransferredText + call PrintText + call Delay50 + jp Func_415df + +TradeWavesFarewellText: ; 41642 (10:5642) + TX_FAR _TradeWavesFarewellText + db "@" + +TradeTransferredText: ; 41647 (10:5647) + TX_FAR _TradeTransferredText + db "@" + +PrintTradeTakeCareText: ; 4164c (10:564c) + ld hl, TradeTakeCareText + call PrintText + jp Delay50 + +TradeTakeCareText: ; 41655 (10:5655) + TX_FAR _TradeTakeCareText + db "@" + +PrintTradeWillTradeText: ; 4165a (10:565a) + ld hl, TradeWillTradeText + call PrintText + call Delay50 + ld hl, TradeforText + call PrintText + jp Delay50 + +TradeWillTradeText: ; 4166c (10:566c) + TX_FAR _TradeWillTradeText + db "@" + +TradeforText: ; 41671 (10:5671) + TX_FAR _TradeforText + db "@" + +Func_41676: ; 41676 (10:5676) + ld [W_ANIMATIONID], a ; $d07c + xor a + ld [$cc5b], a + ld a, $8 + jp Predef ; indirect jump to MoveAnimation (78d5e (1e:4d5e)) |