diff --git a/EngineHacks/ExternalHacks/GaidenMagic/GaidenMagic.c b/EngineHacks/ExternalHacks/GaidenMagic/GaidenMagic.c index d414e6d55d..5c094e4fbe 100644 --- a/EngineHacks/ExternalHacks/GaidenMagic/GaidenMagic.c +++ b/EngineHacks/ExternalHacks/GaidenMagic/GaidenMagic.c @@ -1,6 +1,6 @@ #include -#include "FE-Clib-master/include/gbafe.h" +#include "FE-CLib-master/include/gbafe.h" typedef struct SpellList SpellList; typedef struct MenuItemPanelProc MenuItemPanelProc; diff --git a/EngineHacks/ExternalHacks/GaidenMagic/GaidenMagic.lyn.event b/EngineHacks/ExternalHacks/GaidenMagic/GaidenMagic.lyn.event index c09380eeb8..8432a3bfc9 100644 --- a/EngineHacks/ExternalHacks/GaidenMagic/GaidenMagic.lyn.event +++ b/EngineHacks/ExternalHacks/GaidenMagic/GaidenMagic.lyn.event @@ -1,29 +1,25 @@ PUSH ORG $16b28 ALIGN 4 -SHORT $4778 $46C0 -WORD $E59FC000 $E12FFF1C +WORD $46C04778 $E59FC000 $E12FFF1C POIN NewGetUnitEquippedWeapon POP PUSH ORG $16b58 ALIGN 4 -SHORT $4778 $46C0 -WORD $E59FC000 $E12FFF1C +WORD $46C04778 $E59FC000 $E12FFF1C POIN NewGetUnitEquippedWeaponSlot POP PUSH ORG $24588 ALIGN 4 -SHORT $4778 $46C0 -WORD $E59FC000 $E12FFF1C +WORD $46C04778 $E59FC000 $E12FFF1C POIN NewMenuRText POP PUSH ORG $18b28 ALIGN 4 -SHORT $4778 $46C0 -WORD $E59FC000 $E12FFF1C +WORD $46C04778 $E59FC000 $E12FFF1C POIN NewGetUnitUseFlags POP ALIGN 4 @@ -35,7 +31,7 @@ ORG CURRENTOFFSET+$5c;RangeUsabilityCheckStaff: ORG CURRENTOFFSET+$2c;RangeUsabilityCheckNotStaff: ORG CURRENTOFFSET+$2c;GetSpellType: ORG CURRENTOFFSET+$28;SpellsGetterForLevel: -ORG CURRENTOFFSET+$74;SpellsGetter: +ORG CURRENTOFFSET+$70;SpellsGetter: ORG CURRENTOFFSET+$12;GaidenBlackMagicUMEffect: ORG CURRENTOFFSET+$2a;GaidenWhiteMagicUMEffect: ORG CURRENTOFFSET+$2c;NewGetUnitUseFlags: @@ -48,7 +44,7 @@ ORG CURRENTOFFSET+$1c;HasSufficientHP: ORG CURRENTOFFSET+$78;GaidenBlackMagicUMUsability: ORG CURRENTOFFSET+$1c;GaidenWhiteMagicUMUsability: ORG CURRENTOFFSET+$1c;SetRoundForSpell: -ORG CURRENTOFFSET+$44;Proc_GaidenMagicHPCost: +ORG CURRENTOFFSET+$38;Proc_GaidenMagicHPCost: ORG CURRENTOFFSET+$24;GetFirstAttackSpell: ORG CURRENTOFFSET+$2c;NewGetUnitEquippedWeapon: ORG CURRENTOFFSET+$a8;NewGetUnitEquippedWeaponSlot: @@ -64,108 +60,42 @@ ORG CURRENTOFFSET+$50;SpellDrawingRoutine: ORG CURRENTOFFSET+$6c;MagicMenuBPress: ORG CURRENTOFFSET+$70;SpellEffectRoutine: ORG CURRENTOFFSET+$94;SpellOnHover: -ORG CURRENTOFFSET+$2fc;SpellOnUnhover: +ORG CURRENTOFFSET+$2e8;SpellOnUnhover: ORG CURRENTOFFSET+$24;NewMenuRText: -ORG CURRENTOFFSET+$70;NewExitBattleForecast: +ORG CURRENTOFFSET+$78;NewExitBattleForecast: ORG CURRENTOFFSET+$3c;GaidenStatScreen: ORG CURRENTOFFSET+$e8;GaidenRTextGetter: ORG CURRENTOFFSET+$38;GaidenRTextLooper: POP -SHORT $B5F0 $17CF $121D $17DE $120C $42B7 $DC02 $D102 $42AC $D900 $2C $4310 $22FF $224 $4013 $4011 $428B $D900 $19 $4321 $BCF0 $BC04 $4710 $B573 $4 $1E08 $D00C $323D $7813 $2B02 $D108 $4B1A $8819 $4B1A $F001 $F89C $2008 $BC76 $BC02 $4708 $4B17 $F001 $F895 $7822 $4B16 $2004 $701A $4B16 $F001 $F88E $4B15 $4816 $F001 $F88A $4D15 $4 $4B15 $6828 $F001 $F884 $2302 $1 $22B0 $9300 $2000 $330A $4E11 $F001 $F87E $2105 $2000 $4B10 $F001 $F876 $20 $230B $220F $6829 $4C0D $F001 $F870 $2017 $E7D1 $46C0 +WORD $CB5F0 $121D17CF $120917DE $DC0242B7 $42A9D102 $29D900 $22FF4310 $40130209 $42A34014 $1CD900 $BCF04321 $4710BC04 $4B573 $D00C1E08 $7813323D $D1082B02 $88194B19 $F0014B19 $2008F88D $BC02BC76 $4B174708 $F886F001 $4B167822 $701A2004 $F0014B15 $4B15F87F $F0014815 $4D15F87B $4B150004 $F0016828 $2302F875 $22B00001 $20009300 $4E11330A $F86FF001 $20002105 $F0014B0F $20F867 $220F230B $4C0D6829 $F861F001 $E7D12017 POIN gGaidenMagicUMErrorText -BYTE $81 $F5 $4 $8 $79 $35 $0 $8 $80 $F0 $3 $2 $BD $35 $0 $8 $E5 $EB $4 $8 +WORD $804F581 $8003579 $203F080 $80035BD $804EBE5 POIN SpellSelectMenuDefs -BYTE $50 $4E $0 $3 $B9 $92 $1 $8 $3D $56 $0 $8 $59 $64 $0 $8 $85 $E6 $1 $8 -SHORT $B510 $4B06 $781B $2B00 $D101 $4A05 $7013 $4B05 $F001 $F84A $2000 $BC10 $BC02 $4708 -BYTE $80 $F0 $3 $2 $82 $F0 $3 $2 $CD $DA $1 $8 -SHORT $B570 $8 $4B0F $C $F001 $F83A $21 $4D0E $2804 $D012 $6828 $4B0D $F001 $F832 $2800 $D009 $21 $6828 $4B0A $F001 $F82B $4B0A $F001 $F828 $1E43 $4198 $BC70 $BC02 $4708 $6828 $4B06 $F001 $F81F $E7F7 -BYTE $49 $75 $1 $8 $50 $4E $0 $3 $51 $67 $1 $8 $B5 $51 $2 $8 $29 $FD $4 $8 $71 $88 $2 $8 -SHORT $B570 $8 $4B0F $C $F001 $F80C $21 $4D0E $2804 $D012 $6828 $4B0D $F001 $F804 $2800 $D009 $21 $6828 $4B0A $F000 $FFFD $4B0A $F000 $FFFA $1E43 $4198 $BC70 $BC02 $4708 $6828 $4B06 $F000 $FFF1 $E7F7 -BYTE $49 $75 $1 $8 $50 $4E $0 $3 $51 $67 $1 $8 $B5 $51 $2 $8 $29 $FD $4 $8 $71 $88 $2 $8 -SHORT $B570 $4B09 $5 $8 $C $F000 $FFDD $3 $2000 $2B04 $D105 $21 $28 $F7FF $FFC3 $1E43 $4198 $BC70 $BC02 $4708 -BYTE $49 $75 $1 $8 -SHORT $B570 $4B09 $5 $8 $C $F000 $FFC7 $3 $2000 $2B04 $D005 $21 $28 $F7FF $FFAD $1E43 $4198 $BC70 $BC02 $4708 -BYTE $49 $75 $1 $8 -SHORT $4B08 $B510 $F000 $FFB4 $2202 $3 $2001 $4393 $2B05 $D003 $10 $2B04 $D000 $3803 $BC10 $BC02 $4708 $46C0 -BYTE $49 $75 $1 $8 -SHORT $B5F7 $2608 $9100 $9201 $5786 $C80C $6A9B $6A91 $430B $5DB $D500 $3650 $7913 $4A14 $9B $4F14 $589C $3D $2C00 $D002 $7823 $2B00 $D105 $2300 $38 $702B $BCFE $BC02 $4708 $9A00 $3201 $D103 $429E $DA04 $3402 $E7EF $9A00 $429A $D1FA $9B01 $3301 $D103 $7863 $702B $3501 $E7F3 $7860 $F7FF $FFBB $9B01 $4298 $D1ED $E7F4 $46C0 +WORD $3004E50 $80192B9 $800563D $8006459 $801E685 $4B06B510 $2B00781B $4A05D101 $4B057013 $F83CF001 $BC102000 $4708BC02 $203F080 $203F082 $801DACD $8B570 $C4B0F $F82CF001 $4D0E0021 $D0122804 $4B0D6828 $F824F001 $D0092800 $68280021 $F0014B0A $4B0AF81D $F81AF001 $41981E43 $BC02BC70 $68284708 $F0014B06 $E7F7F811 $8017549 $3004E50 $8016751 $80251B5 $804FD29 $8028871 $8B570 $C4B0F $FFFEF000 $4D0E0021 $D0122804 $4B0D6828 $FFF6F000 $D0092800 $68280021 $F0004B0A $4B0AFFEF $FFECF000 $41981E43 $BC02BC70 $68284708 $F0004B06 $E7F7FFE3 $8017549 $3004E50 $8016751 $80251B5 $804FD29 $8028871 $4B09B570 $80005 $F000000C $3FFCF $2B042000 $21D105 $F7FF0028 $1E43FFC3 $BC704198 $4708BC02 $8017549 $4B09B570 $80005 $F000000C $3FFB9 $2B042000 $21D005 $F7FF0028 $1E43FFAD $BC704198 $4708BC02 $8017549 $B5104B08 $FFA6F000 $32202 $43932001 $D0042B05 $2B040010 $2001D001 $BC104240 $4708BC02 $8017549 $2608B5F7 $57869200 $FC80C $6A916A9B $5DB430B $3650D500 $4B137912 $58D40092 $1D4B12 $2C009301 $7823D002 $D1052B00 $98012300 $BCFE702B $4708BC02 $D1031C7A $DA03429E $E7F03402 $D1FB429F $78609B00 $D1033301 $702B7863 $E7F33501 $FFBCF7FF $42989B00 $E7F5D1EE POIN SpellListTable -BYTE $D1 $B6 $2 $2 -SHORT $A $2101 $B510 $4249 $F7FF $FFC0 $BC10 $BC02 $4708 $B570 $D $2101 $4 $4B06 $7019 $4B06 $6818 $F7FF $FFED $2A $21 $F7FF $FEAA $BC70 $BC02 $4708 -BYTE $82 $F0 $3 $2 $50 $4E $0 $3 -SHORT $B570 $D $2102 $4 $4B06 $7019 $4B06 $6818 $F7FF $FFD8 $2A $21 $F7FF $FE95 $BC70 $BC02 $4708 $46C0 -BYTE $82 $F0 $3 $2 $50 $4E $0 $3 -SHORT $3 $B5F7 $6 $5 $2400 $2701 $3328 $9301 $361E $8830 $2800 $D010 $4B23 $F000 $FF27 $4238 $D019 $28 $8831 $4B21 $F000 $FF20 $2800 $D000 $433C $9B01 $3602 $429E $D1EB $2101 $28 $4249 $F7FF $FFAA $2701 $6 $7830 $2800 $D110 $20 $BCFE $BC02 $4708 $2304 $4218 $D0EA $28 $8831 $4B13 $F000 $FF03 $2800 $D0E3 $2302 $431C $E7E0 $4B0D $F000 $FEFB $4238 $D009 $28 $7831 $4B0B $F000 $FEF4 $2800 $D000 $433C $3601 $E7DC $2304 $4218 $D0FA $28 $7831 $4B05 $F000 $FEE7 $2800 $D0F3 $2302 $431C $E7F0 -BYTE $6D $75 $1 $8 $51 $67 $1 $8 $1 $68 $1 $8 -SHORT $B570 $5 $F7FF $FF6E $4 $7820 $2800 $D102 $BC70 $BC02 $4708 $4B07 $F000 $FECE $2804 $D101 $3401 $E7F2 $28 $7821 $F7FF $FE86 $2800 $D0F7 $2001 $E7ED -BYTE $49 $75 $1 $8 -SHORT $B5F7 $F $11 $5 $F7FF $FF50 $2601 $2400 $9001 $4276 $9B01 $5D19 $2900 $D105 $2401 $4264 $20 $BCFE $BC02 $4708 $28 $F7FF $FE69 $2800 $D002 $3601 $42BE $D0F3 $3401 $E7EB $B510 $C $2101 $4249 $F7FF $FF32 $3 $7818 $2800 $D102 $BC10 $BC02 $4708 $3301 $42A0 $D1F6 $2001 $E7F7 $4B14 $1A $B510 $3270 $7811 $2208 $569A $2000 $4291 $D000 $18 $4B10 $1A $3270 $7811 $2208 $569A $4291 $D105 $2800 $D104 $2000 $BC10 $BC02 $4708 $18 $2108 $2201 $5641 $4252 $F7FF $FECC $7802 $2A00 $D0F1 $4B05 $4313 $4A05 $2001 $8013 $E7EC $46C0 -BYTE $EC $A4 $3 $2 $6C $A5 $3 $2 $0 $FF $FF $FF $F4 $5 $0 $3 -SHORT $B510 $4B04 $F000 $FE5A $4B03 $5C18 $BC10 $BC02 $4708 $46C0 -BYTE $ED $74 $1 $8 +WORD $202B6D1 $2101000A $4249B510 $FFC2F7FF $BC02BC10 $B5704708 $2101000D $4B060004 $4B067019 $F7FF6818 $2AFFED $F7FF0021 $BC70FEAD $4708BC02 $203F082 $3004E50 $DB570 $42102 $70194B06 $68184B06 $FFD8F7FF $21002A $FE98F7FF $BC02BC70 $46C04708 $203F082 $3004E50 $B5F70003 $50006 $27012400 $93013328 $8830361E $D0102800 $F0004B23 $4238FF1B $28D019 $4B218831 $FF14F000 $D0002800 $9B01433C $429E3602 $2101D1EB $42490028 $FFAAF7FF $62701 $28007830 $20D110 $BC02BCFE $23044708 $D0EA4218 $88310028 $F0004B13 $2800FEF7 $2302D0E3 $E7E0431C $F0004B0D $4238FEEF $28D009 $4B0B7831 $FEE8F000 $D0002800 $3601433C $2304E7DC $D0FA4218 $78310028 $F0004B05 $2800FEDB $2302D0F3 $E7F0431C $801756D $8016751 $8016801 $5B570 $FF6EF7FF $78200004 $D1022800 $BC02BC70 $4B074708 $FEC2F000 $D1012804 $E7F23401 $78210028 $FE88F7FF $D0F72800 $E7ED2001 $8017549 $FB5F7 $50011 $FF50F7FF $24002601 $42769001 $5D199B01 $D1052900 $42642401 $BCFE0020 $4708BC02 $F7FF0028 $2800FE6B $3601D002 $D0F342BE $E7EB3401 $CB510 $42492101 $FF32F7FF $2B007803 $18D103 $BC02BC10 $30014708 $D1F542A3 $E7F72001 $4C12B570 $24087825 $48112108 $4A124B11 $78125704 $42A55659 $4291D105 $2000D105 $BC02BC70 $42914708 $18D000 $22012108 $42525641 $FED2F7FF $29007801 $4A07D0EF $430A4B07 $801A2001 $46C0E7EA $203A55C $203A4EC $203A56C $203A5DC $FFFFFF00 $30005F4 $4B04B510 $FE4EF000 $5C184B03 $BC02BC10 $46C04708 $80174ED POIN GaidenSpellCostTable -SHORT $B510 $2413 $5704 $8 $F7FF $FFEC $2301 $4284 $DC00 $2300 $18 $BC10 $BC02 $4708 $B5F8 $4E14 $27FF $5 $34 $23F $7829 $2900 $D10B $7031 $7823 $2003 $2B00 $D003 $7821 $2900 $D10F $2002 $BCF8 $BC02 $4708 $4B0B $4339 $6818 $F7FF $FDE8 $2800 $D002 $782B $7033 $3601 $3501 $E7E4 $4B05 $6818 $F7FF $FFCD $3401 $2800 $D0E5 $2001 $E7E7 -BYTE $88 $1 $2 $2 $50 $4E $0 $3 -SHORT $B510 $4B05 $2101 $6818 $F7FF $FEA4 $F7FF $FFCA $BC10 $BC02 $4708 $46C0 -BYTE $50 $4E $0 $3 -SHORT $B510 $4B05 $2102 $6818 $F7FF $FE96 $F7FF $FFBC $BC10 $BC02 $4708 $46C0 -BYTE $50 $4E $0 $3 -SHORT $B570 $6 $3648 $C $8831 $5 $F7FF $FFA0 $2800 $D012 $8830 $F7FF $FF8D $2380 $6822 $5B $4313 $6023 $603 $7CEA $E1B $1AD2 $74EA $7960 $1AC3 $7163 $BC70 $BC01 $4700 $2320 $6822 $4313 $6023 $E7F7 $B570 $4B07 $4 $15 $F000 $FDD0 $2809 $D103 $29 $20 $F7FF $FFD2 $BC70 $BC01 $4700 $46C0 -BYTE $59 $6B $1 $8 -SHORT $2101 $B570 $4249 $F7FF $FE55 $4 $7820 $25 $2800 $D006 $4B04 $F000 $FDB7 $3401 $2804 $D0F5 $7828 $BC70 $BC02 $4708 -BYTE $49 $75 $1 $8 -SHORT $B570 $6 $2500 $33 $6A $331E $5A99 $30 $4B1E $F000 $FDA3 $1E04 $D01E $350C $6D $1975 $88EC $4B1B $220B $7BD9 $23C0 $56B2 $4013 $4299 $D11D $4B18 $781B $2B00 $D00A $4B17 $7ADB $61B $4D16 $161B $4293 $D00B $24FF $7828 $224 $4304 $20 $BC70 $BC02 $4708 $3501 $2D05 $D1D3 $E7E0 $7828 $4B0F $F000 $FD7A $2804 $D1ED $E7F0 $30 $4B0C $F000 $FD73 $2809 $D1EA $30 $F7FF $FFAA $1E04 $D0E5 $23FF $21B $431C $E7E1 -BYTE $51 $67 $1 $8 $F0 $BC $2 $2 $82 $F0 $3 $2 $6C $A5 $3 $2 $80 $F0 $3 $2 $49 $75 $1 $8 $59 $6B $1 $8 -SHORT $B5F7 $4B2F $781B $5 $4E2E $2B00 $D115 $4F2E $883A $29 $2303 $14 $311E $9101 $401C $421A $D11B $9A01 $63 $28 $5AD1 $F000 $FD46 $2800 $D138 $3401 $2C05 $D1F4 $E03E $220B $4B23 $7ADB $5682 $61B $161B $429A $D1E1 $4B21 $7819 $F000 $FD34 $2800 $D0DB $2409 $E024 $220B $4B1D $7ADB $56AA $61B $2400 $161B $429A $D1DA $28 $F7FF $FF5D $9000 $9A01 $63 $28 $5AD1 $F000 $FD1D $2800 $D013 $23 $330C $5B $18EB $88D8 $4B12 $2A $78B9 $681B $F000 $FD0D $2800 $D102 $9B00 $2B00 $D1D8 $20 $BCFE $BC02 $4708 $3401 $2C05 $D1E0 $9B00 $2B00 $D1CE $2401 $4264 $E7F2 $46C0 -BYTE $82 $F0 $3 $2 $51 $67 $1 $8 $D4 $A4 $3 $2 $EC $A4 $3 $2 $80 $F0 $3 $2 $6C $A5 $3 $2 +WORD $2413B510 $85704 $FFECF7FF $42842301 $2300DC00 $BC100018 $4708BC02 $4E14B5F8 $527FF $23F0034 $29007829 $7031D10B $20037823 $D0032B00 $29007821 $2002D10F $BC02BCF8 $4B0B4708 $68184339 $FDEAF7FF $D0022800 $7033782B $35013601 $4B05E7E4 $F7FF6818 $3401FFCD $D0E52800 $E7E72001 $2020188 $3004E50 $4B05B510 $68182101 $FEA4F7FF $FFCAF7FF $BC02BC10 $46C04708 $3004E50 $4B05B510 $68182102 $FE96F7FF $FFBCF7FF $BC02BC10 $46C04708 $3004E50 $5B570 $C3548 $F7FF8829 $2800FFA1 $8828D00D $FF8EF7FF $68222380 $4313005B $79636023 $71631A1B $BC01BC70 $23204700 $43136822 $E7F76023 $4B07B570 $150004 $FDCAF000 $D1032809 $200029 $FFD8F7FF $BC01BC70 $46C04700 $8016B59 $B5702101 $F7FF4249 $4FE5B $257820 $D0062800 $F0004B04 $3401FDB1 $D0F52804 $BC707828 $4708BC02 $8017549 $6B570 $332500 $331E006A $305A99 $F0004B1E $1E04FD9D $350CD01C $1975006D $4B1B88EC $7BD9220B $56B223C0 $42994013 $4B18D11D $2B00781B $4B17D015 $4D177ADB $7828061B $4293161B $24FFD008 $224782B $E008431C $2D053501 $E7E2D1D5 $F0004B10 $2804FD77 $20D1F1 $BC02BC70 $304708 $F0004B0C $2809FD6D $30D1F5 $FFAAF7FF $D0F01E04 $21B23FF $46C0E7E2 $8016751 $202BCF0 $203F082 $203A56C $203F080 $8017549 $8016B59 $4B2FB5F7 $5781B $2B004E2E $4F2ED115 $29883A $142303 $9101311E $421A401C $9A01D11B $280063 $F0005AD1 $2800FD40 $3401D138 $D1F42C05 $220BE03E $7ADB4B23 $61B5682 $429A161B $4B21D1E1 $F0007819 $2800FD2E $2409D0DB $220BE024 $7ADB4B1D $61B56AA $161B2400 $D1DA429A $F7FF0028 $9000FF5D $639A01 $5AD10028 $FD17F000 $D0132800 $330C0023 $18EB005B $4B1288D8 $78B9002A $F000681B $2800FD07 $9B00D102 $D1D82B00 $BCFE0020 $4708BC02 $2C053401 $9B00D1E0 $D1CE2B00 $42642401 $46C0E7F2 $203F082 $8016751 $203A4D4 $203A4EC $203F080 $203A56C POIN gCan_Attack_Target -SHORT $B510 $4B0C $781B $2B00 $D00C $4B0B $781A $23FF $21B $431A $4B09 $2100 $681B $F000 $FCDD $BC10 $BC01 $4700 $4B06 $7C9B $330C $5B $18C3 $88DA $E7F0 $46C0 -BYTE $82 $F0 $3 $2 $80 $F0 $3 $2 +WORD $4B0CB510 $2B00781B $4B0BD00C $23FF781A $431A021B $21004B09 $F000681B $BC10FCD7 $4700BC01 $7C9B4B06 $5B330C $88DA18C3 $46C0E7F0 $203F082 $203F080 POIN gHealStaff_RangeSetup -BYTE $58 $A9 $3 $2 -SHORT $2300 $4A03 $7013 $4A03 $7013 $4A03 $7013 $4770 -BYTE $82 $F0 $3 $2 $80 $F0 $3 $2 $84 $F0 $3 $2 -SHORT $B5F7 $4B1C $9101 $7819 $7 $2900 $D100 $3901 $2500 $38 $F7FF $FD46 $2C $9000 $9B00 $781E $2E00 $D105 $28 $21 $B003 $BCF0 $BC04 $4710 $23FF $21B $431E $9B01 $31 $38 $2B00 $D115 $F7FF $FC88 $2800 $D00D $4B0B $31 $681B $38 $F000 $FC92 $2 $B $28 $21 $F7FF $FBCC $5 $C $9B00 $3301 $9300 $E7D7 $9B01 $F000 $FC83 $E7E7 -BYTE $82 $F0 $3 $2 +WORD $203A958 $4A032300 $4A037013 $4A037013 $47707013 $203F082 $203F080 $203F084 $4B1CB5F7 $78199101 $29000007 $3901D100 $382500 $FD4CF7FF $9000002C $781E9B00 $D1052E00 $210028 $BCF0B003 $4710BC04 $21B23FF $9B01431E $380031 $D1152B00 $FC90F7FF $D00D2800 $314B0B $38681B $FC8CF000 $B0002 $210028 $FBD4F7FF $C0005 $33019B00 $E7D79300 $F0009B01 $E7E7FC7D $203F082 POIN gGet_Item_Range -SHORT $B $B5F0 $B085 $6 $9101 $9202 $3302 $D336 $2500 $3 $7 $2C $3328 $9303 $371E $8839 $2900 $D017 $30 $9B02 $F000 $FC68 $2800 $D00D $4B1B $30 $681B $8839 $F000 $FC60 $2 $B $28 $21 $F7FF $FB9A $5 $C $9B03 $3702 $429F $D1E4 $9B01 $3301 $D10B $30 $9902 $F7FF $FF91 $2 $B $28 $21 $F7FF $FB87 $5 $C $28 $21 $B005 $BCF0 $BC04 $4710 $9B01 $2B09 $D009 $19 $310C $4B05 $49 $1841 $681B $88C9 $F000 $FC33 $E7EA $9902 $F7FF $FF73 $E7E6 +WORD $B5F0000B $6B085 $92029101 $D3363302 $32500 $2C0007 $93033328 $8839371E $D0172900 $9B020030 $FC62F000 $D00D2800 $304B1B $8839681B $FC5AF000 $B0002 $210028 $FBA2F7FF $C0005 $37029B03 $D1E4429F $33019B01 $30D10B $F7FF9902 $2FF91 $28000B $F7FF0021 $5FB8F $28000C $B0050021 $BC04BCF0 $9B014710 $D0082B09 $5B330C $88D918C3 $681B4B04 $FC2EF000 $9902E7EB $FF74F7FF $46C0E7E7 POIN gGet_Item_Range -SHORT $B510 $4 $B480 $F7FF $FF6B $2 $B $2700 $46BC $2111 $2010 $5661 $5620 $4C04 $6824 $F000 $FC1C $BC80 $BC10 $BC01 $4700 $46C0 +WORD $4B510 $F7FFB480 $2FF6B $2700000B $211146BC $56612010 $4C045620 $F0006824 $BC80FC16 $BC01BC10 $46C04700 POIN gWrite_Range -SHORT $B570 $2501 $4B12 $701D $4B12 $4C13 $6818 $21FF $F000 $FC0B $4B11 $2100 $6818 $F000 $FC06 $4C10 $29 $6820 $F7FF $FD24 $4D0E $2800 $D00A $6820 $490D $F7FF $FFCD $2003 $F000 $FBF8 $2000 $BC70 $BC02 $4708 $6820 $4909 $F7FF $FFC2 $2005 $E7F3 -BYTE $82 $F0 $3 $2 $E0 $E4 $2 $2 $E5 $97 $1 $8 $E4 $E4 $2 $2 $50 $4E $0 $3 $99 $DA $1 $8 -POIN CURRENTOFFSET-2011 -POIN CURRENTOFFSET-2059 -SHORT $B570 $2502 $4B12 $701D $4B12 $4C13 $6818 $21FF $F000 $FBD3 $4B11 $2100 $6818 $F000 $FBCE $4C10 $29 $6820 $F7FF $FCEC $4D0E $2800 $D00A $6820 $490D $F7FF $FF95 $2003 $F000 $FBC0 $2000 $BC70 $BC02 $4708 $6820 $4909 $F7FF $FF8A $2005 $E7F3 -BYTE $82 $F0 $3 $2 $E0 $E4 $2 $2 $E5 $97 $1 $8 $E4 $E4 $2 $2 $50 $4E $0 $3 $99 $DA $1 $8 -POIN CURRENTOFFSET-2123 -POIN CURRENTOFFSET-2171 -SHORT $B5F8 $4F11 $4C11 $E $6820 $7839 $F7FF $FC32 $31 $5 $783A $6820 $F7FF $FCD6 $5C2D $2D00 $D103 $2003 $BCF8 $BC02 $4708 $29 $6820 $F7FF $FB4B $2800 $D0F5 $29 $6820 $F7FF $FD35 $4243 $4158 $3001 $E7EE $46C0 -BYTE $82 $F0 $3 $2 $50 $4E $0 $3 -SHORT $B5F8 $C $4E14 $4F15 $6830 $7839 $F7FF $FC0A $23 $333C $783A $7819 $5 $6830 $F7FF $FCAC $5C2D $6830 $29 $F7FF $FD17 $2 $20 $8DA3 $8D61 $15B $185B $490A $5B $185B $4C09 $29 $3034 $F000 $FB5A $2001 $4B07 $F000 $FB55 $2000 $BCF8 $BC02 $4708 $46C0 -BYTE $50 $4E $0 $3 $82 $F0 $3 $2 $A8 $2C $2 $2 $49 $68 $1 $8 $AD $1F $0 $8 -SHORT $B510 $2100 $4810 $4B11 $F000 $FB40 $2004 $4B10 $F000 $FB3C $4B0F $F000 $FB39 $4B0F $8B99 $899B $2201 $1AC9 $4C0D $2310 $480D $F000 $FB30 $4B0D $F000 $FB2C $2300 $4A0C $7013 $4A0C $203B $7013 $BC10 $BC02 $4708 $46C0 -BYTE $A8 $3C $2 $2 $21 $12 $0 $8 $AD $1F $0 $8 $21 $3D $0 $8 $B0 $BC $2 $2 $4D $F6 $4 $8 $F0 $D1 $59 $8 $CD $DA $1 $8 $80 $F0 $3 $2 $82 $F0 $3 $2 -SHORT $B510 $313D $780B $2B02 $D108 $4B16 $8819 $4B16 $F000 $FB04 $2008 $BC10 $BC02 $4708 $2200 $4B13 $749A $4B13 $3201 $701A $4B12 $F000 $FAF7 $4C12 $4B12 $7820 $F000 $FAF2 $21FF $7822 $209 $4B10 $4311 $2804 $D009 $6818 $4B0E $F000 $FAE7 $480E $4B0E $F000 $FAE3 $2027 $E7DD $6818 $4B0C $F000 $FADD $E7F8 +WORD $2501B570 $701D4B12 $4C134B12 $21FF6818 $FC05F000 $21004B11 $F0006818 $4C10FC00 $68200029 $FD2AF7FF $28004D0E $6820D00A $F7FF490D $2003FFCD $FBF2F000 $BC702000 $4708BC02 $49096820 $FFC2F7FF $E7F32005 $203F082 $202E4E0 $80197E5 $202E4E4 $3004E50 $801DA99 +POIN CURRENTOFFSET-1995 +POIN CURRENTOFFSET-2043 +WORD $2502B570 $701D4B12 $4C134B12 $21FF6818 $FBCDF000 $21004B11 $F0006818 $4C10FBC8 $68200029 $FCF2F7FF $28004D0E $6820D00A $F7FF490D $2003FF95 $FBBAF000 $BC702000 $4708BC02 $49096820 $FF8AF7FF $E7F32005 $203F082 $202E4E0 $80197E5 $202E4E4 $3004E50 $801DA99 +POIN CURRENTOFFSET-2107 +POIN CURRENTOFFSET-2155 +WORD $4F11B5F8 $E4C11 $78396820 $FC38F7FF $50031 $6820783A $FCDCF7FF $2D005C2D $2003D103 $BC02BCF8 $294708 $F7FF6820 $2800FB53 $29D0F5 $F7FF6820 $4243FD3B $30014158 $46C0E7EE $203F082 $3004E50 $CB5F8 $4F154E14 $78396830 $FC10F7FF $333C0023 $7819783A $68300005 $FCB2F7FF $68305C2D $F7FF0029 $2FD1D $8DA30020 $15B8D61 $490A185B $185B005B $294C09 $F0003034 $2001FB54 $F0004B07 $2000FB4F $BC02BCF8 $46C04708 $3004E50 $203F082 $2022CA8 $8016849 $8001FAD $2100B510 $4B114810 $FB3AF000 $4B102004 $FB36F000 $F0004B0F $4B0FFB33 $899B8B99 $1AC92201 $23104C0D $F000480D $4B0DFB2A $FB26F000 $4B0C2200 $4B0C701A $701A203B $BC02BC10 $46C04708 $2023CA8 $8001221 $8001FAD $8003D21 $202BCB0 $804F64D $859D1F0 $801DACD $203F080 $203F082 $313DB510 $2B02780B $4B16D108 $4B168819 $FAFEF000 $BC102008 $4708BC02 $4B132200 $4B13749A $701A3201 $F0004B12 $4C12FAF1 $78204B12 $FAECF000 $782221FF $4B100209 $28044311 $6818D009 $F0004B0E $480EFAE1 $F0004B0E $2027FADD $6818E7DD $F0004B0C $E7F8FAD7 POIN gGaidenMagicSpellMenuErrorText -BYTE $81 $F5 $4 $8 $58 $A9 $3 $2 $84 $F0 $3 $2 $85 $E8 $4 $8 $80 $F0 $3 $2 $49 $75 $1 $8 $50 $4E $0 $3 $B5 $51 $2 $8 $F8 $D3 $59 $8 $3D $FA $4 $8 $61 $8E $2 $8 -SHORT $B5F0 $4B9F $4E9F $B089 $7831 $4 $6818 $F7FF $FB51 $4B9B $3461 $7832 $7821 $5 $6818 $F7FF $FBF3 $4B99 $5C2F $4899 $701F $4B99 $F000 $FAAC $3 $9002 $3330 $781B $9306 $3 $4 $3331 $781B $3434 $4D93 $20 $9307 $9404 $F000 $FA9E $9B02 $333C $18 $9305 $F000 $FA98 $9E02 $3644 $30 $F000 $FA93 $2500 $2308 $220E $9907 $9806 $9500 $4C89 $F000 $FA89 $38 $4B88 $F000 $FA84 $9003 $2804 $D100 $E0D0 $4B7D $2109 $6818 $4B84 $F000 $FA7A $4B83 $4884 $F000 $FA76 $2A $3 $2102 $9804 $4C81 $F000 $FA70 $4B81 $8818 $4B7D $F000 $FA6A $2A $3 $2132 $9804 $4C7B $F000 $FA64 $4B78 $487B $F000 $FA5F $2A $3 $2102 $9805 $4C76 $F000 $FA59 $4B72 $4877 $F000 $FA54 $2A $3 $2102 $30 $4C70 $F000 $FA4E $4B6D $4872 $F000 $FA49 $2A $3 $2132 $9805 $4C6B $F000 $FA43 $4B67 $486E $F000 $FA3E $2A $3 $2132 $30 $4C65 $F000 $FA38 $4B59 $39 $6818 $F7FF $FBE2 $1E43 $4198 $5 $38 $F7FF $FBCE $3501 $603 $2A $2154 $4D62 $9804 $E1B $F000 $FA25 $4C61 $23 $335A $2202 $2124 $781B $9805 $F000 $FA1C $23 $3360 $2202 $2124 $30 $781B $F000 $FA14 $23 $3366 $2202 $2154 $781B $9805 $3462 $F000 $FA0B $2202 $2154 $30 $7823 $F000 $FA05 $9D07 $9B06 $3501 $1C5C $16D $4B4F $1964 $64 $18E4 $9B02 $9E02 $334C $9304 $3634 $21 $30 $4B4B $F000 $F9F0 $9B04 $3608 $3480 $429E $D1F5 $9B03 $2B04 $D00E $9802 $3032 $7802 $9806 $3005 $4B42 $9903 $1940 $40 $1818 $312 $4B41 $3170 $F000 $F9D9 $2510 $2611 $4B3F $4C3F $6818 $21FF $F000 $F9D2 $4B3E $2100 $6818 $F000 $F9CD $4B3C $681C $4B22 $6818 $4B3B $39 $681B $5745 $5786 $F000 $F9C1 $2 $B $28 $31 $F000 $F9BC $9803 $2804 $D000 $2002 $4B34 $F000 $F9B4 $2000 $B009 $BCF0 $BC02 $4708 $4B31 $38 $F000 $F9AB $4B1C $F000 $F9A8 $9C04 $3801 $2200 $1C45 $2B $20 $11 $4E19 $F000 $F9A1 $4B29 $28 $F000 $F99A $7803 $3408 $2B00 $D1EF $4A26 $4B1A $10 $19 $305A $8800 $315A $8008 $10 $19 $3066 $8800 $6E12 $3166 $8008 $661A $E781 $46C0 -BYTE $50 $4E $0 $3 $82 $F0 $3 $2 $80 $F0 $3 $2 $88 $AE $59 $8 $9D $2E $0 $8 $C9 $3D $0 $8 $69 $E3 $4 $8 $49 $75 $1 $8 $1 $A4 $2 $8 $41 $A2 $0 $8 $F1 $4 $0 $0 $81 $44 $0 $8 +WORD $804F581 $203A958 $203F084 $804E885 $203F080 $8017549 $3004E50 $80251B5 $859D3F8 $804FA3D $8028E61 $4E98B5F0 $B08B4F98 $78310004 $F7FF6838 $3461FB57 $57821 $68387832 $FBFAF7FF $93035C2B $4B919A03 $701A4891 $F0004B91 $3FAA5 $33309002 $9308781B $33310003 $9309781B $33340003 $184C8B $F0009305 $9B02FA96 $18333C $F0009306 $9B02FA90 $183344 $F0009307 $2400FA8A $220E2308 $98089909 $4D819400 $FA82F000 $4B809803 $FA7CF000 $28049004 $E0C3D100 $4B7D2109 $F0006838 $4E7CFA73 $F000487C $4D7CFA72 $30022 $98052102 $FA6AF000 $88184B79 $FA67F000 $30022 $98052132 $FA60F000 $F0004875 $22FA5E $21020003 $F0009806 $4872FA57 $FA55F000 $30022 $98072102 $FA4EF000 $F000486E $22FA4C $21320003 $F0009806 $486BFA45 $FA43F000 $30022 $98072132 $FA3CF000 $68389903 $FBF2F7FF $41981E43 $98030004 $FBDEF7FF $6033401 $224D61 $98052154 $F0000E1B $4B5FFA29 $22024C5F $781B2124 $F0009806 $23FA21 $22023360 $781B2124 $F0009807 $23FA19 $22023366 $781B2154 $34629806 $FA10F000 $21542202 $98077823 $FA0AF000 $9D099B08 $35011C5C $16D9B02 $4F4E9E02 $334C1964 $93050064 $19E43634 $300021 $F0004B4A $9B05F9F5 $34803608 $D1F5429E $2B049B04 $9B02D00D $33329808 $781A3005 $19409904 $4B420040 $18380312 $F0003170 $2510F9DF $4B3F2611 $68184C3F $F00021FF $4B3EF9D8 $68182100 $F9D3F000 $681C4B3C $68184B22 $99034B3B $5745681B $F0005786 $BF9C7 $310002 $F0000028 $9B04F9C2 $2B042002 $18D100 $F0004B33 $2000F9B9 $BCF0B00B $4708BC02 $98034B30 $F9B0F000 $F0004B1A $9D05F9AD $22003801 $231C44 $110028 $F0004E17 $4B29F9A6 $F0000020 $7803F99F $2B003508 $4826D1EF $88004A26 $4B184917 $108008 $30660019 $6E128800 $80083166 $E783661A $203F082 $3004E50 $203F080 $859AE88 $8002E9D $8003DC9 $804E369 $8017549 $802A401 $800A241 $4F1 $8004481 POIN gGaidenMagicHPCostText -BYTE $F3 $4 $0 $0 $F4 $4 $0 $0 $1 $5 $0 $0 $F5 $4 $0 $0 $A5 $44 $0 $8 $EC $A4 $3 $2 $A8 $2C $2 $2 $71 $3E $0 $8 $BD $36 $0 $8 $E0 $E4 $2 $2 $E5 $97 $1 $8 $E4 $E4 $2 $2 +WORD $4F3 $4F4 $501 $4F5 $80044A5 $203A546 $203A4EC $2022CA8 $8003E71 $80036BD $202E4E0 $80197E5 $202E4E4 POIN gWrite_Range POIN gGet_Item_Range -BYTE $99 $DA $1 $8 $31 $75 $1 $8 $F5 $3F $0 $8 $6C $A5 $3 $2 -SHORT $B510 $4C06 $7823 $2B00 $D102 $4B05 $F000 $F93E $2000 $7020 $BC10 $BC02 $4708 $46C0 -BYTE $84 $F0 $3 $2 $CD $DA $1 $8 -SHORT $B $B5F7 $4A16 $8D4C $8D8D $7811 $333C $9300 $4E14 $E4 $ED $2900 $D014 $4F13 $6838 $F7FF $F9B9 $4B0F $9001 $781A $9B00 $6838 $7819 $F7FF $FA5B $9B01 $5C1A $29 $20 $F000 $F918 $BCF7 $BC01 $4700 $9B00 $781B $2B04 $D806 $4A06 $330C $6812 $5B $18D3 $88DA $E7ED $4B04 $8D9A $E7EA -BYTE $82 $F0 $3 $2 $61 $8E $8 $8 $50 $4E $0 $3 $B0 $BC $2 $2 -SHORT $2100 $B510 $4B0A $781B $8 $2B01 $D107 $F7FF $F992 $2200 $4B07 $701A $BC10 $BC01 $4700 $2B02 $D102 $F7FF $F99D $E7F4 $4B03 $F000 $F8E5 $E7F0 -BYTE $82 $F0 $3 $2 $80 $F0 $3 $2 $31 $2B $2 $8 -SHORT $B5F0 $B087 $9103 $2101 $14 $4B2E $9002 $4249 $6818 $F7FF $F969 $23 $7 $3B08 $881B $9E02 $9301 $7838 $2800 $D104 $20 $B007 $BCF0 $BC02 $4708 $4B25 $F000 $F8C2 $2280 $9B03 $9004 $15B $7F41 $9305 $18F0 $4B21 $40 $1D2 $18C0 $4B20 $F000 $F8B4 $9B01 $3306 $2500 $8023 $9301 $2306 $20 $70A5 $70E5 $7123 $7165 $71A5 $71E5 $4B19 $F000 $F8A4 $29 $20 $4B17 $F000 $F89F $9B04 $8818 $4B16 $F000 $F89A $2A $3 $29 $20 $4D13 $F000 $F895 $9B05 $1CB1 $18C9 $4B0B $49 $20 $18C9 $4B0F $F000 $F889 $9B02 $3408 $429E $D102 $3608 $3701 $E7B4 $9B03 $3302 $9303 $9E02 $E7F8 $46C0 -BYTE $8 $3C $0 $2 $B1 $77 $1 $8 $94 $3C $0 $2 $BD $36 $0 $8 $C9 $3D $0 $8 $61 $3E $0 $8 $41 $A2 $0 $8 $81 $44 $0 $8 $71 $3E $0 $8 -SHORT $2101 $B570 $4 $6AC3 $7C9D $4B09 $4249 $6818 $F7FF $F8F6 $23 $5D40 $334E $8018 $4B05 $F000 $F859 $8843 $344C $8023 $BC70 $BC01 $4700 $46C0 -BYTE $8 $3C $0 $2 $B1 $77 $1 $8 -SHORT $B5F8 $6AC3 $7C9C $3 $3350 $881B $5 $2B10 $D116 $2701 $427F $4B1E $681E $39 $30 $F7FF $F8D3 $5D01 $30 $F7FF $F997 $2800 $D105 $28 $4B18 $F000 $F833 $3C02 $D5ED $BCF8 $BC01 $4700 $2B80 $D1FA $2101 $4F12 $683E $4249 $30 $F7FF $F8BB $5D01 $30 $F7FF $F97F $2800 $D1ED $28 $4E0D $F000 $F81E $7E3 $D5E7 $2101 $683F $4249 $38 $F7FF $F8A9 $1904 $3C01 $38 $7821 $F7FF $F96B $2800 $D1D9 $28 $F000 $F80B $E7D5 $46C0 -BYTE $8 $3C $0 $2 $55 $93 $8 $8 $B5 $93 $8 $8 -SHORT $4718 $4720 $4728 $4730 +WORD $801DA99 $8017531 $8003FF5 $203A5C6 $203A56C $4C06B510 $2B007823 $4B05D102 $F942F000 $70202000 $BC02BC10 $46C04708 $203F084 $801DACD $B5F0000B $8D4C4A18 $78118D8D $333CB085 $93029201 $E44F15 $290000ED $4E14D015 $F7FF6830 $9B01F9C7 $781A9003 $68309B02 $F7FF7819 $9B03FA69 $295C1A $F0000020 $B005F91B $BC01BCF0 $9B024700 $2B04781B $4A07D806 $6812330C $18D3005B $E7EC88DA $8D9A4B04 $46C0E7E9 $203F082 $8088E61 $3004E50 $202BCB0 $B5102100 $781B4B0A $2B010008 $F7FFD107 $2200F99E $701A4B07 $BC01BC10 $2B024700 $F7FFD102 $E7F4F9A9 $F0004B03 $E7F0F8E5 $203F082 $203F080 $8022B31 $B087B5F0 $21019102 $4B2E0014 $42499001 $F7FF6818 $23F975 $3B080007 $9E01881B $78389300 $D1042800 $B0070020 $BC02BCF0 $4B254708 $F8C2F000 $9B022280 $15B9003 $93047F41 $4B2118F0 $1D20040 $930518C0 $F0004B1F $9B00F8B3 $25003306 $93008023 $202306 $70E570A5 $71657123 $71E571A5 $F0004B18 $29F8A3 $4B170020 $F89EF000 $88189B03 $F0004B15 $2AF899 $290003 $4D130020 $F894F000 $1CB19B04 $9B0518C9 $200049 $4B0F18C9 $F888F000 $34089B01 $D102429E $37013608 $9B02E7B3 $93023302 $E7F89E01 $2003C08 $80177B1 $2003C94 $80036BD $8003DC9 $8003E61 $800A241 $8004481 $8003E71 $B5702101 $6AC30004 $4B097C9D $68184249 $F902F7FF $5D400023 $8018334E $F0004B05 $8843F859 $8023344C $BC01BC70 $46C04700 $2003C08 $80177B1 $6AC3B5F8 $37C9C $881B3350 $2B100005 $2701D116 $4B1E427F $39681E $F7FF0030 $5D01F8DF $F7FF0030 $2800F9A3 $28D105 $F0004B18 $3C02F833 $BCF8D5ED $4700BC01 $D1FA2B80 $4F122101 $4249683E $F7FF0030 $5D01F8C7 $F7FF0030 $2800F98B $28D1ED $F0004E0D $7E3F81E $2101D5E7 $4249683F $F7FF0038 $1900F8B5 $78013801 $F7FF0038 $2800F977 $28D1D9 $F80BF000 $46C0E7D5 $2003C08 $8089355 $80893B5 $47204718 $47304728 $46C04738 diff --git a/EngineHacks/ExternalHacks/GaidenMagic/GaidenMagic.s b/EngineHacks/ExternalHacks/GaidenMagic/GaidenMagic.s index fc061688fb..1af132e58f 100644 --- a/EngineHacks/ExternalHacks/GaidenMagic/GaidenMagic.s +++ b/EngineHacks/ExternalHacks/GaidenMagic/GaidenMagic.s @@ -1,4 +1,6 @@ .cpu arm7tdmi + .arch armv4t + .fpu softvfp .eabi_attribute 20, 1 @ Tag_ABI_FP_denormal .eabi_attribute 21, 1 @ Tag_ABI_FP_exceptions .eabi_attribute 23, 3 @ Tag_ABI_FP_number_model @@ -9,103 +11,57 @@ .eabi_attribute 34, 0 @ Tag_CPU_unaligned_access .eabi_attribute 18, 4 @ Tag_ABI_PCS_wchar_t .file "GaidenMagic.c" -@ GNU C17 (devkitARM release 55) version 10.2.0 (arm-none-eabi) -@ compiled by GNU C version 6.4.0, GMP version 6.0.0, MPFR version 3.1.2, MPC version 1.0.2, isl version none -@ GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 -@ options passed: -imultilib thumb -@ -iprefix c:\devkitpro\devkitarm\bin\../lib/gcc/arm-none-eabi/10.2.0/ -@ -D__USES_INITFINI__ GaidenMagic.c -mcpu=arm7tdmi -mthumb -@ -mthumb-interwork -mtune=arm7tdmi -mlong-calls -march=armv4t -@ -auxbase-strip GaidenMagic.s -Os -Wall -fverbose-asm -@ options enabled: -faggressive-loop-optimizations -fallocation-dce -@ -fauto-inc-dec -fbranch-count-reg -fcaller-saves -fcode-hoisting -@ -fcombine-stack-adjustments -fcompare-elim -fcprop-registers -@ -fcrossjumping -fcse-follow-jumps -fdefer-pop -@ -fdelete-null-pointer-checks -fdevirtualize -fdevirtualize-speculatively -@ -fdwarf2-cfi-asm -fearly-inlining -feliminate-unused-debug-symbols -@ -feliminate-unused-debug-types -fexpensive-optimizations -@ -fforward-propagate -ffp-int-builtin-inexact -ffunction-cse -fgcse -@ -fgcse-lm -fgnu-unique -fguess-branch-probability -fhoist-adjacent-loads -@ -fident -fif-conversion -fif-conversion2 -findirect-inlining -finline -@ -finline-atomics -finline-functions -finline-functions-called-once -@ -finline-small-functions -fipa-bit-cp -fipa-cp -fipa-icf -@ -fipa-icf-functions -fipa-icf-variables -fipa-profile -fipa-pure-const -@ -fipa-reference -fipa-reference-addressable -fipa-sra -@ -fipa-stack-alignment -fipa-vrp -fira-hoist-pressure -@ -fira-share-save-slots -fira-share-spill-slots -@ -fisolate-erroneous-paths-dereference -fivopts -fkeep-static-consts -@ -fleading-underscore -flifetime-dse -flra-remat -fmath-errno -@ -fmerge-constants -fmerge-debug-strings -fmove-loop-invariants -@ -fomit-frame-pointer -foptimize-sibling-calls -fpartial-inlining -@ -fpeephole -fpeephole2 -fplt -fprefetch-loop-arrays -freg-struct-return -@ -freorder-blocks -freorder-functions -frerun-cse-after-loop -@ -fsched-critical-path-heuristic -fsched-dep-count-heuristic -@ -fsched-group-heuristic -fsched-interblock -fsched-last-insn-heuristic -@ -fsched-pressure -fsched-rank-heuristic -fsched-spec -@ -fsched-spec-insn-heuristic -fsched-stalled-insns-dep -fschedule-insns2 -@ -fsection-anchors -fsemantic-interposition -fshow-column -fshrink-wrap -@ -fshrink-wrap-separate -fsigned-zeros -fsplit-ivs-in-unroller -@ -fsplit-wide-types -fssa-backprop -fssa-phiopt -fstdarg-opt -@ -fstore-merging -fstrict-aliasing -fstrict-volatile-bitfields -@ -fsync-libcalls -fthread-jumps -ftoplevel-reorder -ftrapping-math -@ -ftree-bit-ccp -ftree-builtin-call-dce -ftree-ccp -ftree-ch -@ -ftree-coalesce-vars -ftree-copy-prop -ftree-cselim -ftree-dce -@ -ftree-dominator-opts -ftree-dse -ftree-forwprop -ftree-fre -@ -ftree-loop-distribute-patterns -ftree-loop-if-convert -ftree-loop-im -@ -ftree-loop-ivcanon -ftree-loop-optimize -ftree-parallelize-loops= -@ -ftree-phiprop -ftree-pre -ftree-pta -ftree-reassoc -ftree-scev-cprop -@ -ftree-sink -ftree-slsr -ftree-sra -ftree-switch-conversion -@ -ftree-tail-merge -ftree-ter -ftree-vrp -funit-at-a-time -fverbose-asm -@ -fzero-initialized-in-bss -mbe32 -mlittle-endian -mlong-calls -@ -mpic-data-is-text-relative -msched-prolog -mthumb -mthumb-interwork -@ -mvectorize-with-neon-quad +@ GNU C17 (devkitARM release 58) version 12.1.0 (arm-none-eabi) +@ compiled by GNU C version 8.3.0, GMP version 6.2.1, MPFR version 4.1.0, MPC version 1.2.1, isl version isl-0.18-GMP +@ GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 +@ options passed: -mcpu=arm7tdmi -mthumb -mthumb-interwork -mtune=arm7tdmi -mlong-calls -march=armv4t -Os .text .align 1 - .arch armv4t .syntax unified .code 16 .thumb_func - .fpu softvfp .type IncorporateNewRange, %function IncorporateNewRange: @ Function supports interworking. @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 push {r4, r5, r6, r7, lr} @ +@ RangeDisplay.c:59: { + movs r4, r1 @ existing, tmp185 @ RangeDisplay.c:62: long long existingMin = existing >> 40; asrs r7, r1, #31 @ existingMin, existing, @ RangeDisplay.c:63: long long newMin = new >> 40; asrs r5, r3, #8 @ newMin, new, asrs r6, r3, #31 @ newMin, new, @ RangeDisplay.c:66: return existingMask|newMask|(( newMin < existingMin ? newMin : existingMin ) << 40)|(( newMax > existingMax ? newMax : existingMax ) << 32); - asrs r4, r1, #8 @ existingMin, existing, + asrs r1, r1, #8 @ existingMin, existing, cmp r7, r6 @ existingMin, newMin bgt .L3 @, bne .L2 @, - cmp r4, r5 @ existingMin, newMin + cmp r1, r5 @ existingMin, newMin bls .L2 @, .L3: - movs r4, r5 @ existingMin, newMin + movs r1, r5 @ existingMin, newMin .L2: @ RangeDisplay.c:66: return existingMask|newMask|(( newMin < existingMin ? newMin : existingMin ) << 40)|(( newMax > existingMax ? newMax : existingMax ) << 32); orrs r0, r2 @ tmp137, new @ RangeDisplay.c:64: long long existingMax = (existing >> 32) & 0xFF; movs r2, #255 @ tmp144, @ RangeDisplay.c:66: return existingMask|newMask|(( newMin < existingMin ? newMin : existingMin ) << 40)|(( newMax > existingMax ? newMax : existingMax ) << 32); - lsls r4, r4, #8 @ tmp167, existingMin, + lsls r1, r1, #8 @ tmp167, existingMin, @ RangeDisplay.c:65: long long newMax = (new >> 32) & 0xFF; ands r3, r2 @ newMax, tmp144 @ RangeDisplay.c:66: return existingMask|newMask|(( newMin < existingMin ? newMin : existingMin ) << 40)|(( newMax > existingMax ? newMax : existingMax ) << 32); - ands r1, r2 @ existingMax, tmp144 - cmp r3, r1 @ newMax, existingMax + ands r4, r2 @ existingMax, tmp144 + cmp r3, r4 @ newMax, existingMax bls .L4 @, - movs r1, r3 @ existingMax, newMax + movs r4, r3 @ existingMax, newMax .L4: @ RangeDisplay.c:67: } @ sp needed @ @ RangeDisplay.c:66: return existingMask|newMask|(( newMin < existingMin ? newMin : existingMin ) << 40)|(( newMax > existingMax ? newMax : existingMax ) << 32); - orrs r1, r4 @ tmp159, tmp167 + orrs r1, r4 @ tmp159, existingMax @ RangeDisplay.c:67: } pop {r4, r5, r6, r7} pop {r2} @@ -115,7 +71,6 @@ IncorporateNewRange: .syntax unified .code 16 .thumb_func - .fpu softvfp .type GaidenMagicUMEffectExt, %function GaidenMagicUMEffectExt: @ Function supports interworking. @@ -163,7 +118,7 @@ GaidenMagicUMEffectExt: bl .L14 @ @ UnitMenu.c:62: MenuProc* menu = StartMenu(&SpellSelectMenuDefs); ldr r3, .L12+20 @ tmp136, - ldr r0, .L12+24 @, + ldr r0, .L12+24 @ tmp135, bl .L14 @ @ UnitMenu.c:64: StartFace(0,GetUnitPortraitId(gActiveUnit),0xB0,0xC,2); ldr r5, .L12+28 @ tmp137, @@ -217,7 +172,6 @@ GaidenMagicUMEffectExt: .syntax unified .code 16 .thumb_func - .fpu softvfp .type GaidenMagicUMUnhover, %function GaidenMagicUMUnhover: @ Function supports interworking. @@ -256,52 +210,51 @@ GaidenMagicUMUnhover: .syntax unified .code 16 .thumb_func - .fpu softvfp .type CanCastSpellNow, %function CanCastSpellNow: @ Function supports interworking. @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 push {r4, r5, r6, lr} @ -@ SpellSystem.c:198: int type = GetItemType(spell); +@ SpellSystem.c:207: int type = GetItemType(spell); movs r0, r1 @, spell ldr r3, .L27 @ tmp122, -@ SpellSystem.c:196: { +@ SpellSystem.c:205: { movs r4, r1 @ spell, tmp135 -@ SpellSystem.c:198: int type = GetItemType(spell); +@ SpellSystem.c:207: int type = GetItemType(spell); bl .L14 @ -@ SpellSystem.c:201: if ( !CanUnitUseWeaponNow(gActiveUnit,spell) ) { return 0; } +@ SpellSystem.c:210: if ( !CanUnitUseWeaponNow(gActiveUnit,spell) ) { return 0; } movs r1, r4 @, spell ldr r5, .L27+4 @ tmp134, -@ SpellSystem.c:199: if ( type != ITYPE_STAFF ) +@ SpellSystem.c:208: if ( type != ITYPE_STAFF ) cmp r0, #4 @ tmp136, beq .L22 @, -@ SpellSystem.c:201: if ( !CanUnitUseWeaponNow(gActiveUnit,spell) ) { return 0; } +@ SpellSystem.c:210: if ( !CanUnitUseWeaponNow(gActiveUnit,spell) ) { return 0; } ldr r0, [r5] @, gActiveUnit ldr r3, .L27+8 @ tmp124, bl .L14 @ -@ SpellSystem.c:201: if ( !CanUnitUseWeaponNow(gActiveUnit,spell) ) { return 0; } +@ SpellSystem.c:210: if ( !CanUnitUseWeaponNow(gActiveUnit,spell) ) { return 0; } cmp r0, #0 @ , beq .L21 @, -@ SpellSystem.c:203: MakeTargetListForWeapon(gActiveUnit,spell); +@ SpellSystem.c:212: MakeTargetListForWeapon(gActiveUnit,spell); movs r1, r4 @, spell ldr r0, [r5] @, gActiveUnit ldr r3, .L27+12 @ tmp126, bl .L14 @ -@ SpellSystem.c:204: return GetTargetListSize() != 0; +@ SpellSystem.c:213: return GetTargetListSize() != 0; ldr r3, .L27+16 @ tmp127, bl .L14 @ -@ SpellSystem.c:204: return GetTargetListSize() != 0; +@ SpellSystem.c:213: return GetTargetListSize() != 0; subs r3, r0, #1 @ tmp130, tmp138 sbcs r0, r0, r3 @ , tmp138, tmp130 .L21: -@ SpellSystem.c:210: } +@ SpellSystem.c:219: } @ sp needed @ pop {r4, r5, r6} pop {r1} bx r1 .L22: -@ SpellSystem.c:208: return CanUnitUseItem(gActiveUnit,spell); +@ SpellSystem.c:217: return CanUnitUseItem(gActiveUnit,spell); ldr r0, [r5] @, gActiveUnit ldr r3, .L27+20 @ tmp132, bl .L14 @ @@ -321,52 +274,51 @@ CanCastSpellNow: .syntax unified .code 16 .thumb_func - .fpu softvfp .type CanCastSpell, %function CanCastSpell: @ Function supports interworking. @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 push {r4, r5, r6, lr} @ -@ SpellSystem.c:214: int type = GetItemType(spell); +@ SpellSystem.c:223: int type = GetItemType(spell); movs r0, r1 @, spell ldr r3, .L35 @ tmp122, -@ SpellSystem.c:213: { +@ SpellSystem.c:222: { movs r4, r1 @ spell, tmp135 -@ SpellSystem.c:214: int type = GetItemType(spell); +@ SpellSystem.c:223: int type = GetItemType(spell); bl .L14 @ -@ SpellSystem.c:217: if ( !CanUnitUseWeapon(gActiveUnit,spell) ) { return 0; } +@ SpellSystem.c:226: if ( !CanUnitUseWeapon(gActiveUnit,spell) ) { return 0; } movs r1, r4 @, spell ldr r5, .L35+4 @ tmp134, -@ SpellSystem.c:215: if ( type != ITYPE_STAFF ) +@ SpellSystem.c:224: if ( type != ITYPE_STAFF ) cmp r0, #4 @ tmp136, beq .L30 @, -@ SpellSystem.c:217: if ( !CanUnitUseWeapon(gActiveUnit,spell) ) { return 0; } +@ SpellSystem.c:226: if ( !CanUnitUseWeapon(gActiveUnit,spell) ) { return 0; } ldr r0, [r5] @, gActiveUnit ldr r3, .L35+8 @ tmp124, bl .L14 @ -@ SpellSystem.c:217: if ( !CanUnitUseWeapon(gActiveUnit,spell) ) { return 0; } +@ SpellSystem.c:226: if ( !CanUnitUseWeapon(gActiveUnit,spell) ) { return 0; } cmp r0, #0 @ , beq .L29 @, -@ SpellSystem.c:219: MakeTargetListForWeapon(gActiveUnit,spell); +@ SpellSystem.c:228: MakeTargetListForWeapon(gActiveUnit,spell); movs r1, r4 @, spell ldr r0, [r5] @, gActiveUnit ldr r3, .L35+12 @ tmp126, bl .L14 @ -@ SpellSystem.c:220: return GetTargetListSize() != 0; +@ SpellSystem.c:229: return GetTargetListSize() != 0; ldr r3, .L35+16 @ tmp127, bl .L14 @ -@ SpellSystem.c:220: return GetTargetListSize() != 0; +@ SpellSystem.c:229: return GetTargetListSize() != 0; subs r3, r0, #1 @ tmp130, tmp138 sbcs r0, r0, r3 @ , tmp138, tmp130 .L29: -@ SpellSystem.c:226: } +@ SpellSystem.c:235: } @ sp needed @ pop {r4, r5, r6} pop {r1} bx r1 .L30: -@ SpellSystem.c:208: return CanUnitUseItem(gActiveUnit,spell); +@ SpellSystem.c:217: return CanUnitUseItem(gActiveUnit,spell); ldr r0, [r5] @, gActiveUnit ldr r3, .L35+20 @ tmp132, bl .L14 @ @@ -386,7 +338,6 @@ CanCastSpell: .syntax unified .code 16 .thumb_func - .fpu softvfp .type RangeUsabilityCheckStaff, %function RangeUsabilityCheckStaff: @ Function supports interworking. @@ -431,7 +382,6 @@ RangeUsabilityCheckStaff: .syntax unified .code 16 .thumb_func - .fpu softvfp .type RangeUsabilityCheckNotStaff, %function RangeUsabilityCheckNotStaff: @ Function supports interworking. @@ -453,7 +403,7 @@ RangeUsabilityCheckNotStaff: movs r0, #0 @ , cmp r3, #4 @ tmp126, beq .L42 @, -@ RangeDisplay.c:72: return GetItemType(item) == ITYPE_STAFF && CanCastSpell(unit,item); +@ RangeDisplay.c:77: return GetItemType(item) != ITYPE_STAFF && CanCastSpell(unit,item); movs r1, r4 @, item movs r0, r5 @, unit bl CanCastSpell @ @@ -476,36 +426,36 @@ RangeUsabilityCheckNotStaff: .syntax unified .code 16 .thumb_func - .fpu softvfp .type GetSpellType, %function GetSpellType: @ Function supports interworking. @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 -@ SpellSystem.c:280: int wType = GetItemType(spell); +@ SpellSystem.c:289: int wType = GetItemType(spell); ldr r3, .L52 @ tmp117, -@ SpellSystem.c:279: { +@ SpellSystem.c:288: { push {r4, lr} @ -@ SpellSystem.c:280: int wType = GetItemType(spell); +@ SpellSystem.c:289: int wType = GetItemType(spell); bl .L14 @ -@ SpellSystem.c:281: if ( wType == ITYPE_ANIMA || wType == ITYPE_DARK ) { return BLACK_MAGIC; } +@ SpellSystem.c:290: if ( wType == ITYPE_ANIMA || wType == ITYPE_DARK ) { return BLACK_MAGIC; } movs r2, #2 @ tmp118, movs r3, r0 @ tmp127, tmp127 -@ SpellSystem.c:281: if ( wType == ITYPE_ANIMA || wType == ITYPE_DARK ) { return BLACK_MAGIC; } +@ SpellSystem.c:290: if ( wType == ITYPE_ANIMA || wType == ITYPE_DARK ) { return BLACK_MAGIC; } movs r0, #1 @ , -@ SpellSystem.c:281: if ( wType == ITYPE_ANIMA || wType == ITYPE_DARK ) { return BLACK_MAGIC; } +@ SpellSystem.c:290: if ( wType == ITYPE_ANIMA || wType == ITYPE_DARK ) { return BLACK_MAGIC; } bics r3, r2 @ tmp127, tmp118 cmp r3, #5 @ _6, beq .L48 @, -@ SpellSystem.c:282: else if ( wType == ITYPE_STAFF || wType == ITYPE_LIGHT) { return WHITE_MAGIC; } +@ SpellSystem.c:291: else if ( wType == ITYPE_STAFF || wType == ITYPE_LIGHT) { return WHITE_MAGIC; } movs r0, r2 @ , tmp118 -@ SpellSystem.c:282: else if ( wType == ITYPE_STAFF || wType == ITYPE_LIGHT) { return WHITE_MAGIC; } +@ SpellSystem.c:291: else if ( wType == ITYPE_STAFF || wType == ITYPE_LIGHT) { return WHITE_MAGIC; } cmp r3, #4 @ _6, beq .L48 @, -@ SpellSystem.c:283: else { return -1; } - subs r0, r0, #3 @ , +@ SpellSystem.c:292: else { return -1; } + movs r0, #1 @ , + rsbs r0, r0, #0 @ , .L48: -@ SpellSystem.c:284: } +@ SpellSystem.c:293: } @ sp needed @ pop {r4} pop {r1} @@ -520,7 +470,6 @@ GetSpellType: .syntax unified .code 16 .thumb_func - .fpu softvfp .type SpellsGetterForLevel, %function SpellsGetterForLevel: @ Function supports interworking. @@ -530,93 +479,96 @@ SpellsGetterForLevel: @ SpellSystem.c:10: int unitLevel = unit->level; movs r6, #8 @ unitLevel, @ SpellSystem.c:8: { - str r1, [sp] @ tmp153, %sfp - str r2, [sp, #4] @ tmp154, %sfp + str r2, [sp] @ tmp153, %sfp @ SpellSystem.c:10: int unitLevel = unit->level; ldrsb r6, [r0, r6] @ unitLevel,* unitLevel @ SpellSystem.c:11: if ( UNIT_ATTRIBUTES(unit) & CA_PROMOTED ) { unitLevel += 80; } // Treat promoted as top bit set. ldmia r0!, {r2, r3} @,, +@ SpellSystem.c:8: { + movs r7, r1 @ level, tmp152 +@ SpellSystem.c:11: if ( UNIT_ATTRIBUTES(unit) & CA_PROMOTED ) { unitLevel += 80; } // Treat promoted as top bit set. ldr r3, [r3, #40] @ _4->attributes, _4->attributes - ldr r1, [r2, #40] @ tmp159, _2->attributes - orrs r3, r1 @ tmp138, tmp159 + ldr r1, [r2, #40] @ _2->attributes, _2->attributes + orrs r3, r1 @ tmp138, _2->attributes @ SpellSystem.c:11: if ( UNIT_ATTRIBUTES(unit) & CA_PROMOTED ) { unitLevel += 80; } // Treat promoted as top bit set. - lsls r3, r3, #23 @ tmp156, tmp138, + lsls r3, r3, #23 @ tmp155, tmp138, bpl .L55 @, @ SpellSystem.c:11: if ( UNIT_ATTRIBUTES(unit) & CA_PROMOTED ) { unitLevel += 80; } // Treat promoted as top bit set. adds r6, r6, #80 @ unitLevel, .L55: @ SpellSystem.c:13: SpellList* ROMList = SpellListTable[unit->pCharacterData->number]; - ldrb r3, [r2, #4] @ tmp144, + ldrb r2, [r2, #4] @ tmp144, @ SpellSystem.c:13: SpellList* ROMList = SpellListTable[unit->pCharacterData->number]; - ldr r2, .L69 @ tmp143, - lsls r3, r3, #2 @ tmp145, tmp144, - ldr r7, .L69+4 @ , - ldr r4, [r3, r2] @ ROMList, SpellListTable[_9] + ldr r3, .L71 @ tmp143, + lsls r2, r2, #2 @ tmp145, tmp144, + ldr r4, [r2, r3] @ ROMList, SpellListTable[_10] + ldr r3, .L71+4 @ , @ SpellSystem.c:12: u8* currBuffer = SpellsBuffer; - movs r5, r7 @ currBuffer, + movs r5, r3 @ currBuffer, + str r3, [sp, #4] @ , %sfp @ SpellSystem.c:14: if ( ROMList ) cmp r4, #0 @ ROMList, beq .L56 @, .L57: @ SpellSystem.c:17: for ( int i = 0 ; ROMList[i].level ; i++ ) - ldrb r3, [r4] @ _19, MEM[base: _11, offset: 0B] + ldrb r3, [r4] @ _20, MEM[(unsigned char *)_11] @ SpellSystem.c:17: for ( int i = 0 ; ROMList[i].level ; i++ ) - cmp r3, #0 @ _19, - bne .L63 @, + cmp r3, #0 @ _20, + bne .L64 @, .L56: @ SpellSystem.c:33: } @ sp needed @ @ SpellSystem.c:31: *currBuffer = 0; - movs r3, #0 @ tmp148, + movs r3, #0 @ tmp147, @ SpellSystem.c:33: } - movs r0, r7 @, + ldr r0, [sp, #4] @, %sfp @ SpellSystem.c:31: *currBuffer = 0; - strb r3, [r5] @ tmp148, *currBuffer_23 + strb r3, [r5] @ tmp147, *currBuffer_24 @ SpellSystem.c:33: } pop {r1, r2, r3, r4, r5, r6, r7} pop {r1} bx r1 -.L63: +.L64: @ SpellSystem.c:19: if ( (level == -1 && unitLevel >= ROMList[i].level) || (level == ROMList[i].level) ) - ldr r2, [sp] @ level, %sfp - adds r2, r2, #1 @ tmp157, level, + adds r2, r7, #1 @ tmp156, level, bne .L58 @, @ SpellSystem.c:19: if ( (level == -1 && unitLevel >= ROMList[i].level) || (level == ROMList[i].level) ) - cmp r6, r3 @ unitLevel, _19 + cmp r6, r3 @ unitLevel, _20 bge .L59 @, -.L60: +.L62: adds r4, r4, #2 @ ivtmp.207, b .L57 @ .L58: @ SpellSystem.c:19: if ( (level == -1 && unitLevel >= ROMList[i].level) || (level == ROMList[i].level) ) - ldr r2, [sp] @ level, %sfp - cmp r2, r3 @ level, _19 - bne .L60 @, + cmp r7, r3 @ level, _20 + bne .L62 @, .L59: @ SpellSystem.c:21: if ( type == -1 || type == GetSpellType(ROMList[i].spell) ) - ldr r3, [sp, #4] @ type, %sfp - adds r3, r3, #1 @ tmp158, type, + ldr r3, [sp] @ type, %sfp +@ SpellSystem.c:21: if ( type == -1 || type == GetSpellType(ROMList[i].spell) ) + ldrb r0, [r4, #1] @ pretmp_49, MEM[(unsigned char *)_11 + 1B] +@ SpellSystem.c:21: if ( type == -1 || type == GetSpellType(ROMList[i].spell) ) + adds r3, r3, #1 @ tmp157, type, bne .L61 @, -.L62: +.L63: @ SpellSystem.c:24: *currBuffer = ROMList[i].spell; - ldrb r3, [r4, #1] @ _15, MEM[base: _11, offset: 1B] + ldrb r3, [r4, #1] @ _16, MEM[(unsigned char *)_11 + 1B] @ SpellSystem.c:24: *currBuffer = ROMList[i].spell; - strb r3, [r5] @ _15, *currBuffer_22 + strb r3, [r5] @ _16, *currBuffer_23 @ SpellSystem.c:25: currBuffer++; adds r5, r5, #1 @ currBuffer, - b .L60 @ + b .L62 @ .L61: @ SpellSystem.c:21: if ( type == -1 || type == GetSpellType(ROMList[i].spell) ) - ldrb r0, [r4, #1] @ MEM[base: _11, offset: 1B], MEM[base: _11, offset: 1B] bl GetSpellType @ @ SpellSystem.c:21: if ( type == -1 || type == GetSpellType(ROMList[i].spell) ) - ldr r3, [sp, #4] @ type, %sfp - cmp r0, r3 @ tmp155, type - bne .L60 @, - b .L62 @ -.L70: + ldr r3, [sp] @ type, %sfp + cmp r0, r3 @ tmp154, type + bne .L62 @, + b .L63 @ +.L72: .align 2 -.L69: +.L71: .word SpellListTable .word SpellsBuffer .size SpellsGetterForLevel, .-SpellsGetterForLevel @@ -625,7 +577,6 @@ SpellsGetterForLevel: .syntax unified .code 16 .thumb_func - .fpu softvfp .type SpellsGetter, %function SpellsGetter: @ Function supports interworking. @@ -650,7 +601,6 @@ SpellsGetter: .syntax unified .code 16 .thumb_func - .fpu softvfp .type GaidenBlackMagicUMEffect, %function GaidenBlackMagicUMEffect: @ Function supports interworking. @@ -666,10 +616,10 @@ GaidenBlackMagicUMEffect: @ UnitMenu.c:38: { movs r4, r0 @ proc, tmp123 @ UnitMenu.c:39: UsingSpellMenu = BLACK_MAGIC; - ldr r3, .L73 @ tmp118, + ldr r3, .L75 @ tmp118, strb r1, [r3] @ tmp119, UsingSpellMenu @ UnitMenu.c:40: return GaidenMagicUMEffectExt(SpellsGetter(gActiveUnit,BLACK_MAGIC),proc,commandProc); - ldr r3, .L73+4 @ tmp121, + ldr r3, .L75+4 @ tmp121, ldr r0, [r3] @, gActiveUnit bl SpellsGetter @ movs r2, r5 @, commandProc @@ -679,9 +629,9 @@ GaidenBlackMagicUMEffect: pop {r4, r5, r6} pop {r1} bx r1 -.L74: +.L76: .align 2 -.L73: +.L75: .word UsingSpellMenu .word gActiveUnit .size GaidenBlackMagicUMEffect, .-GaidenBlackMagicUMEffect @@ -690,7 +640,6 @@ GaidenBlackMagicUMEffect: .syntax unified .code 16 .thumb_func - .fpu softvfp .type GaidenWhiteMagicUMEffect, %function GaidenWhiteMagicUMEffect: @ Function supports interworking. @@ -706,10 +655,10 @@ GaidenWhiteMagicUMEffect: @ UnitMenu.c:44: { movs r4, r0 @ proc, tmp123 @ UnitMenu.c:45: UsingSpellMenu = WHITE_MAGIC; - ldr r3, .L76 @ tmp118, + ldr r3, .L78 @ tmp118, strb r1, [r3] @ tmp119, UsingSpellMenu @ UnitMenu.c:46: return GaidenMagicUMEffectExt(SpellsGetter(gActiveUnit,WHITE_MAGIC),proc,commandProc); - ldr r3, .L76+4 @ tmp121, + ldr r3, .L78+4 @ tmp121, ldr r0, [r3] @, gActiveUnit bl SpellsGetter @ movs r2, r5 @, commandProc @@ -719,9 +668,9 @@ GaidenWhiteMagicUMEffect: pop {r4, r5, r6} pop {r1} bx r1 -.L77: +.L79: .align 2 -.L76: +.L78: .word UsingSpellMenu .word gActiveUnit .size GaidenWhiteMagicUMEffect, .-GaidenWhiteMagicUMEffect @@ -730,128 +679,127 @@ GaidenWhiteMagicUMEffect: .syntax unified .code 16 .thumb_func - .fpu softvfp .type NewGetUnitUseFlags, %function NewGetUnitUseFlags: @ Function supports interworking. @ args = 0, pretend = 0, frame = 8 @ frame_needed = 0, uses_anonymous_args = 0 - movs r3, r0 @ _72, unit + movs r3, r0 @ _74, unit push {r0, r1, r2, r4, r5, r6, r7, lr} @ - movs r6, r0 @ ivtmp.231, unit -@ SpellSystem.c:110: { + movs r6, r0 @ ivtmp.232, unit +@ SpellSystem.c:120: { movs r5, r0 @ unit, tmp181 -@ SpellSystem.c:111: u32 ret = 0; +@ SpellSystem.c:121: u32 ret = 0; movs r4, #0 @ , -@ SpellSystem.c:115: if ( attributes & IA_WEAPON ) +@ SpellSystem.c:125: if ( attributes & IA_WEAPON ) movs r7, #1 @ tmp179, - adds r3, r3, #40 @ _72, - str r3, [sp, #4] @ _72, %sfp - adds r6, r6, #30 @ ivtmp.231, -.L79: -@ SpellSystem.c:112: for ( int i = 0 ; i < 5 && unit->items[i] ; i++ ) - ldrh r0, [r6] @ _11, MEM[base: _68, offset: 0B] -@ SpellSystem.c:112: for ( int i = 0 ; i < 5 && unit->items[i] ; i++ ) + adds r3, r3, #40 @ _74, + str r3, [sp, #4] @ _74, %sfp + adds r6, r6, #30 @ ivtmp.232, +.L81: +@ SpellSystem.c:122: for ( int i = 0 ; i < 5 && unit->items[i] ; i++ ) + ldrh r0, [r6] @ _11, MEM[(short unsigned int *)_70] +@ SpellSystem.c:122: for ( int i = 0 ; i < 5 && unit->items[i] ; i++ ) cmp r0, #0 @ _11, - beq .L82 @, -@ SpellSystem.c:114: u32 attributes = GetItemAttributes(unit->items[i]); + beq .L86 @, +@ SpellSystem.c:124: u32 attributes = GetItemAttributes(unit->items[i]); ldr r3, .L106 @ tmp145, bl .L14 @ -@ SpellSystem.c:115: if ( attributes & IA_WEAPON ) +@ SpellSystem.c:125: if ( attributes & IA_WEAPON ) tst r0, r7 @ attributes, tmp179 - beq .L80 @, -@ SpellSystem.c:117: if ( CanUnitUseWeaponNow(unit,unit->items[i]) ) { ret |= 1; } + beq .L82 @, +@ SpellSystem.c:127: if ( CanUnitUseWeaponNow(unit,unit->items[i]) ) { ret |= 1; } movs r0, r5 @, unit - ldrh r1, [r6] @ MEM[base: _68, offset: 0B], MEM[base: _68, offset: 0B] + ldrh r1, [r6] @ MEM[(short unsigned int *)_70], MEM[(short unsigned int *)_70] ldr r3, .L106+4 @ tmp149, bl .L14 @ -@ SpellSystem.c:117: if ( CanUnitUseWeaponNow(unit,unit->items[i]) ) { ret |= 1; } +@ SpellSystem.c:127: if ( CanUnitUseWeaponNow(unit,unit->items[i]) ) { ret |= 1; } cmp r0, #0 @ tmp183, - beq .L81 @, -@ SpellSystem.c:117: if ( CanUnitUseWeaponNow(unit,unit->items[i]) ) { ret |= 1; } + beq .L84 @, +@ SpellSystem.c:127: if ( CanUnitUseWeaponNow(unit,unit->items[i]) ) { ret |= 1; } orrs r4, r7 @ , tmp179 -.L81: -@ SpellSystem.c:112: for ( int i = 0 ; i < 5 && unit->items[i] ; i++ ) - ldr r3, [sp, #4] @ _72, %sfp - adds r6, r6, #2 @ ivtmp.231, - cmp r6, r3 @ ivtmp.231, _72 - bne .L79 @, -.L82: -@ SpellSystem.c:125: u8* spells = SpellsGetter(unit,-1); +.L84: +@ SpellSystem.c:122: for ( int i = 0 ; i < 5 && unit->items[i] ; i++ ) + ldr r3, [sp, #4] @ _74, %sfp + adds r6, r6, #2 @ ivtmp.232, + cmp r6, r3 @ ivtmp.232, _74 + bne .L81 @, +.L86: +@ SpellSystem.c:135: u8* spells = SpellsGetter(unit,-1); movs r1, #1 @, movs r0, r5 @, unit rsbs r1, r1, #0 @, bl SpellsGetter @ -@ SpellSystem.c:129: if ( attributes & IA_WEAPON ) +@ SpellSystem.c:139: if ( attributes & IA_WEAPON ) movs r7, #1 @ tmp177, -@ SpellSystem.c:125: u8* spells = SpellsGetter(unit,-1); - movs r6, r0 @ ivtmp.225, tmp185 -.L84: -@ SpellSystem.c:126: for ( int i = 0 ; spells[i] ; i++ ) - ldrb r0, [r6] @ _24, MEM[base: _60, offset: 0B] -@ SpellSystem.c:126: for ( int i = 0 ; spells[i] ; i++ ) - cmp r0, #0 @ _24, - bne .L87 @, -@ SpellSystem.c:139: } +@ SpellSystem.c:135: u8* spells = SpellsGetter(unit,-1); + movs r6, r0 @ ivtmp.226, tmp185 +.L88: +@ SpellSystem.c:136: for ( int i = 0 ; spells[i] ; i++ ) + ldrb r0, [r6] @ _26, MEM[(u8 *)_63] +@ SpellSystem.c:136: for ( int i = 0 ; spells[i] ; i++ ) + cmp r0, #0 @ _26, + bne .L93 @, +@ SpellSystem.c:149: } @ sp needed @ movs r0, r4 @, pop {r1, r2, r3, r4, r5, r6, r7} pop {r1} bx r1 -.L80: -@ SpellSystem.c:119: else if ( attributes & IA_STAFF ) - movs r3, #4 @ tmp192, - tst r0, r3 @ attributes, tmp192 - beq .L81 @, -@ SpellSystem.c:121: if ( CanUnitUseStaffNow(unit,unit->items[i]) ) { ret |= 2; } +.L82: +@ SpellSystem.c:129: else if ( attributes & IA_STAFF ) + movs r3, #4 @ tmp193, + tst r0, r3 @ attributes, tmp193 + beq .L84 @, +@ SpellSystem.c:131: if ( CanUnitUseStaffNow(unit,unit->items[i]) ) { ret |= 2; } movs r0, r5 @, unit - ldrh r1, [r6] @ MEM[base: _68, offset: 0B], MEM[base: _68, offset: 0B] + ldrh r1, [r6] @ MEM[(short unsigned int *)_70], MEM[(short unsigned int *)_70] ldr r3, .L106+8 @ tmp156, bl .L14 @ -@ SpellSystem.c:121: if ( CanUnitUseStaffNow(unit,unit->items[i]) ) { ret |= 2; } +@ SpellSystem.c:131: if ( CanUnitUseStaffNow(unit,unit->items[i]) ) { ret |= 2; } cmp r0, #0 @ tmp184, - beq .L81 @, -@ SpellSystem.c:121: if ( CanUnitUseStaffNow(unit,unit->items[i]) ) { ret |= 2; } + beq .L84 @, +@ SpellSystem.c:131: if ( CanUnitUseStaffNow(unit,unit->items[i]) ) { ret |= 2; } movs r3, #2 @ tmp159, orrs r4, r3 @ , tmp159 - b .L81 @ -.L87: -@ SpellSystem.c:128: u32 attributes = GetItemAttributes(spells[i]); + b .L84 @ +.L93: +@ SpellSystem.c:138: u32 attributes = GetItemAttributes(spells[i]); ldr r3, .L106 @ tmp161, bl .L14 @ -@ SpellSystem.c:129: if ( attributes & IA_WEAPON ) +@ SpellSystem.c:139: if ( attributes & IA_WEAPON ) tst r0, r7 @ attributes, tmp177 - beq .L85 @, -@ SpellSystem.c:131: if ( CanUnitUseWeaponNow(unit,spells[i]) ) { ret |= 1; } + beq .L89 @, +@ SpellSystem.c:141: if ( CanUnitUseWeaponNow(unit,spells[i]) ) { ret |= 1; } movs r0, r5 @, unit - ldrb r1, [r6] @ MEM[base: _60, offset: 0B], MEM[base: _60, offset: 0B] + ldrb r1, [r6] @ MEM[(u8 *)_63], MEM[(u8 *)_63] ldr r3, .L106+4 @ tmp165, bl .L14 @ -@ SpellSystem.c:131: if ( CanUnitUseWeaponNow(unit,spells[i]) ) { ret |= 1; } +@ SpellSystem.c:141: if ( CanUnitUseWeaponNow(unit,spells[i]) ) { ret |= 1; } cmp r0, #0 @ tmp187, - beq .L86 @, -@ SpellSystem.c:131: if ( CanUnitUseWeaponNow(unit,spells[i]) ) { ret |= 1; } + beq .L91 @, +@ SpellSystem.c:141: if ( CanUnitUseWeaponNow(unit,spells[i]) ) { ret |= 1; } orrs r4, r7 @ , tmp177 -.L86: - adds r6, r6, #1 @ ivtmp.225, - b .L84 @ -.L85: -@ SpellSystem.c:133: else if ( attributes & IA_STAFF ) +.L91: + adds r6, r6, #1 @ ivtmp.226, + b .L88 @ +.L89: +@ SpellSystem.c:143: else if ( attributes & IA_STAFF ) movs r3, #4 @ tmp195, tst r0, r3 @ attributes, tmp195 - beq .L86 @, -@ SpellSystem.c:135: if ( CanUnitUseStaffNow(unit,spells[i]) ) { ret |= 2; } + beq .L91 @, +@ SpellSystem.c:145: if ( CanUnitUseStaffNow(unit,spells[i]) ) { ret |= 2; } movs r0, r5 @, unit - ldrb r1, [r6] @ MEM[base: _60, offset: 0B], MEM[base: _60, offset: 0B] + ldrb r1, [r6] @ MEM[(u8 *)_63], MEM[(u8 *)_63] ldr r3, .L106+8 @ tmp172, bl .L14 @ -@ SpellSystem.c:135: if ( CanUnitUseStaffNow(unit,spells[i]) ) { ret |= 2; } +@ SpellSystem.c:145: if ( CanUnitUseStaffNow(unit,spells[i]) ) { ret |= 2; } cmp r0, #0 @ tmp188, - beq .L86 @, -@ SpellSystem.c:135: if ( CanUnitUseStaffNow(unit,spells[i]) ) { ret |= 2; } + beq .L91 @, +@ SpellSystem.c:145: if ( CanUnitUseStaffNow(unit,spells[i]) ) { ret |= 2; } movs r3, #2 @ tmp175, orrs r4, r3 @ , tmp175 - b .L86 @ + b .L91 @ .L107: .align 2 .L106: @@ -864,49 +812,48 @@ NewGetUnitUseFlags: .syntax unified .code 16 .thumb_func - .fpu softvfp .type CanUseAttackSpellsNow, %function CanUseAttackSpellsNow: @ Function supports interworking. @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 push {r4, r5, r6, lr} @ -@ SpellSystem.c:229: { +@ SpellSystem.c:238: { movs r5, r0 @ unit, tmp128 -@ SpellSystem.c:230: u8* spells = SpellsGetter(unit,type); +@ SpellSystem.c:239: u8* spells = SpellsGetter(unit,type); bl SpellsGetter @ - movs r4, r0 @ ivtmp.239, tmp130 + movs r4, r0 @ ivtmp.240, tmp130 .L109: -@ SpellSystem.c:231: for ( int i = 0 ; spells[i] ; i++ ) - ldrb r0, [r4] @ _8, MEM[base: _25, offset: 0B] -@ SpellSystem.c:231: for ( int i = 0 ; spells[i] ; i++ ) +@ SpellSystem.c:240: for ( int i = 0 ; spells[i] ; i++ ) + ldrb r0, [r4] @ _8, MEM[(u8 *)_25] +@ SpellSystem.c:240: for ( int i = 0 ; spells[i] ; i++ ) cmp r0, #0 @ _8, bne .L113 @, .L108: -@ SpellSystem.c:239: } +@ SpellSystem.c:248: } @ sp needed @ pop {r4, r5, r6} pop {r1} bx r1 .L113: -@ SpellSystem.c:233: if ( GetItemType(spells[i]) != ITYPE_STAFF && CanCastSpellNow(unit,spells[i]) ) +@ SpellSystem.c:242: if ( GetItemType(spells[i]) != ITYPE_STAFF && CanCastSpellNow(unit,spells[i]) ) ldr r3, .L115 @ tmp125, bl .L14 @ -@ SpellSystem.c:233: if ( GetItemType(spells[i]) != ITYPE_STAFF && CanCastSpellNow(unit,spells[i]) ) +@ SpellSystem.c:242: if ( GetItemType(spells[i]) != ITYPE_STAFF && CanCastSpellNow(unit,spells[i]) ) cmp r0, #4 @ tmp131, bne .L110 @, .L112: - adds r4, r4, #1 @ ivtmp.239, + adds r4, r4, #1 @ ivtmp.240, b .L109 @ .L110: -@ SpellSystem.c:233: if ( GetItemType(spells[i]) != ITYPE_STAFF && CanCastSpellNow(unit,spells[i]) ) +@ SpellSystem.c:242: if ( GetItemType(spells[i]) != ITYPE_STAFF && CanCastSpellNow(unit,spells[i]) ) movs r0, r5 @, unit - ldrb r1, [r4] @ MEM[base: _25, offset: 0B], MEM[base: _25, offset: 0B] + ldrb r1, [r4] @ MEM[(u8 *)_25], MEM[(u8 *)_25] bl CanCastSpellNow @ -@ SpellSystem.c:233: if ( GetItemType(spells[i]) != ITYPE_STAFF && CanCastSpellNow(unit,spells[i]) ) +@ SpellSystem.c:242: if ( GetItemType(spells[i]) != ITYPE_STAFF && CanCastSpellNow(unit,spells[i]) ) cmp r0, #0 @ tmp132, beq .L112 @, -@ SpellSystem.c:235: return 1; +@ SpellSystem.c:244: return 1; movs r0, #1 @ , b .L108 @ .L116: @@ -919,58 +866,57 @@ CanUseAttackSpellsNow: .syntax unified .code 16 .thumb_func - .fpu softvfp .type GetNthUsableSpell, %function GetNthUsableSpell: @ Function supports interworking. @ args = 0, pretend = 0, frame = 8 @ frame_needed = 0, uses_anonymous_args = 0 push {r0, r1, r2, r4, r5, r6, r7, lr} @ -@ SpellSystem.c:244: { +@ SpellSystem.c:253: { movs r7, r1 @ n, tmp125 movs r1, r2 @ type, tmp126 movs r5, r0 @ unit, tmp124 -@ SpellSystem.c:245: u8* spells = SpellsGetter(unit,type); +@ SpellSystem.c:254: u8* spells = SpellsGetter(unit,type); bl SpellsGetter @ -@ SpellSystem.c:246: int k = -1; +@ SpellSystem.c:255: int k = -1; movs r6, #1 @ k, -@ SpellSystem.c:247: for ( int i = 0 ; spells[i] ; i++ ) +@ SpellSystem.c:256: for ( int i = 0 ; spells[i] ; i++ ) movs r4, #0 @ , -@ SpellSystem.c:245: u8* spells = SpellsGetter(unit,type); +@ SpellSystem.c:254: u8* spells = SpellsGetter(unit,type); str r0, [sp, #4] @ tmp127, %sfp -@ SpellSystem.c:246: int k = -1; +@ SpellSystem.c:255: int k = -1; rsbs r6, r6, #0 @ k, k .L118: -@ SpellSystem.c:247: for ( int i = 0 ; spells[i] ; i++ ) +@ SpellSystem.c:256: for ( int i = 0 ; spells[i] ; i++ ) ldr r3, [sp, #4] @ spells, %sfp - ldrb r1, [r3, r4] @ _6, MEM[base: spells_17, index: _1, offset: 0B] -@ SpellSystem.c:247: for ( int i = 0 ; spells[i] ; i++ ) + ldrb r1, [r3, r4] @ _6, MEM[(u8 *)spells_17 + _1 * 1] +@ SpellSystem.c:256: for ( int i = 0 ; spells[i] ; i++ ) cmp r1, #0 @ _6, bne .L121 @, -@ SpellSystem.c:255: return -1; +@ SpellSystem.c:264: return -1; movs r4, #1 @ , rsbs r4, r4, #0 @ , .L117: -@ SpellSystem.c:256: } +@ SpellSystem.c:265: } movs r0, r4 @, @ sp needed @ pop {r1, r2, r3, r4, r5, r6, r7} pop {r1} bx r1 .L121: -@ SpellSystem.c:249: if ( CanCastSpellNow(unit,spells[i]) ) +@ SpellSystem.c:258: if ( CanCastSpellNow(unit,spells[i]) ) movs r0, r5 @, unit bl CanCastSpellNow @ -@ SpellSystem.c:249: if ( CanCastSpellNow(unit,spells[i]) ) +@ SpellSystem.c:258: if ( CanCastSpellNow(unit,spells[i]) ) cmp r0, #0 @ tmp128, beq .L119 @, -@ SpellSystem.c:251: k++; +@ SpellSystem.c:260: k++; adds r6, r6, #1 @ k, -@ SpellSystem.c:252: if ( k == n ) { return i; } +@ SpellSystem.c:261: if ( k == n ) { return i; } cmp r6, r7 @ k, n beq .L117 @, .L119: -@ SpellSystem.c:247: for ( int i = 0 ; spells[i] ; i++ ) +@ SpellSystem.c:256: for ( int i = 0 ; spells[i] ; i++ ) adds r4, r4, #1 @ , b .L118 @ .size GetNthUsableSpell, .-GetNthUsableSpell @@ -979,38 +925,38 @@ GetNthUsableSpell: .syntax unified .code 16 .thumb_func - .fpu softvfp .type DoesUnitKnowSpell, %function DoesUnitKnowSpell: @ Function supports interworking. @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 push {r4, lr} @ -@ SpellSystem.c:268: { +@ SpellSystem.c:277: { movs r4, r1 @ spell, tmp123 -@ SpellSystem.c:270: u8* spells = SpellsGetter(unit,-1); +@ SpellSystem.c:279: u8* spells = SpellsGetter(unit,-1); movs r1, #1 @, rsbs r1, r1, #0 @, bl SpellsGetter @ - movs r3, r0 @ ivtmp.253, tmp124 .L126: -@ SpellSystem.c:271: for ( int i = 0 ; spells[i] ; i++ ) - ldrb r0, [r3] @ _3, MEM[base: _15, offset: 0B] -@ SpellSystem.c:271: for ( int i = 0 ; spells[i] ; i++ ) - cmp r0, #0 @ _3, +@ SpellSystem.c:280: for ( int i = 0 ; spells[i] ; i++ ) + ldrb r3, [r0] @ _3, MEM[(u8 *)_15] +@ SpellSystem.c:280: for ( int i = 0 ; spells[i] ; i++ ) + cmp r3, #0 @ _3, bne .L128 @, +@ SpellSystem.c:284: return 0; + movs r0, r3 @ , _3 .L125: -@ SpellSystem.c:276: } +@ SpellSystem.c:285: } @ sp needed @ pop {r4} pop {r1} bx r1 .L128: -@ SpellSystem.c:273: if ( spell == spells[i] ) { return 1; } - adds r3, r3, #1 @ ivtmp.253, - cmp r0, r4 @ _3, spell +@ SpellSystem.c:282: if ( spell == spells[i] ) { return 1; } + adds r0, r0, #1 @ ivtmp.254, + cmp r3, r4 @ _3, spell bne .L126 @, -@ SpellSystem.c:273: if ( spell == spells[i] ) { return 1; } +@ SpellSystem.c:282: if ( spell == spells[i] ) { return 1; } movs r0, #1 @ , b .L125 @ .size DoesUnitKnowSpell, .-DoesUnitKnowSpell @@ -1019,85 +965,83 @@ DoesUnitKnowSpell: .syntax unified .code 16 .thumb_func - .fpu softvfp .type InitGaidenSpellLearnPopup, %function InitGaidenSpellLearnPopup: @ Function supports interworking. @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 -@ SpellSystem.c:174: if ( gBattleActor.levelPrevious != gBattleActor.unit.level ) { subject = &gBattleActor; } - ldr r3, .L140 @ tmp131, - movs r2, r3 @ tmp134, tmp131 -@ SpellSystem.c:170: { - push {r4, lr} @ -@ SpellSystem.c:174: if ( gBattleActor.levelPrevious != gBattleActor.unit.level ) { subject = &gBattleActor; } - adds r2, r2, #112 @ tmp134, - ldrb r1, [r2] @ tmp135, -@ SpellSystem.c:174: if ( gBattleActor.levelPrevious != gBattleActor.unit.level ) { subject = &gBattleActor; } - movs r2, #8 @ tmp137, - ldrsb r2, [r3, r2] @ tmp137, -@ SpellSystem.c:173: BattleUnit* subject = NULL; - movs r0, #0 @ subject, -@ SpellSystem.c:174: if ( gBattleActor.levelPrevious != gBattleActor.unit.level ) { subject = &gBattleActor; } - cmp r1, r2 @ tmp135, tmp137 - beq .L131 @, -@ SpellSystem.c:174: if ( gBattleActor.levelPrevious != gBattleActor.unit.level ) { subject = &gBattleActor; } - movs r0, r3 @ subject, tmp131 -.L131: -@ SpellSystem.c:175: if ( gBattleTarget.levelPrevious != gBattleTarget.unit.level ) { subject = &gBattleTarget; } - ldr r3, .L140+4 @ tmp138, - movs r2, r3 @ tmp141, tmp138 - adds r2, r2, #112 @ tmp141, - ldrb r1, [r2] @ tmp142, -@ SpellSystem.c:175: if ( gBattleTarget.levelPrevious != gBattleTarget.unit.level ) { subject = &gBattleTarget; } - movs r2, #8 @ tmp144, - ldrsb r2, [r3, r2] @ tmp144, -@ SpellSystem.c:175: if ( gBattleTarget.levelPrevious != gBattleTarget.unit.level ) { subject = &gBattleTarget; } - cmp r1, r2 @ tmp142, tmp144 - bne .L136 @, -@ SpellSystem.c:176: if ( !subject ) { return 0; } // If this isn't filled, we shouldn't show a popup. - cmp r0, #0 @ subject, - bne .L132 @, + push {r4, r5, r6, lr} @ +@ SpellSystem.c:183: if ( gBattleActor.levelPrevious != gBattleActor.unit.level ) { subject = &gBattleActor; } + ldr r4, .L140 @ tmp139, + ldrb r5, [r4] @ tmp140, +@ SpellSystem.c:183: if ( gBattleActor.levelPrevious != gBattleActor.unit.level ) { subject = &gBattleActor; } + movs r4, #8 @ tmp142, +@ SpellSystem.c:184: if ( gBattleTarget.levelPrevious != gBattleTarget.unit.level ) { subject = &gBattleTarget; } + movs r1, #8 @ _8, +@ SpellSystem.c:183: if ( gBattleActor.levelPrevious != gBattleActor.unit.level ) { subject = &gBattleActor; } + ldr r0, .L140+4 @ tmp136, +@ SpellSystem.c:184: if ( gBattleTarget.levelPrevious != gBattleTarget.unit.level ) { subject = &gBattleTarget; } + ldr r3, .L140+8 @ tmp131, + ldr r2, .L140+12 @ tmp134, +@ SpellSystem.c:183: if ( gBattleActor.levelPrevious != gBattleActor.unit.level ) { subject = &gBattleActor; } + ldrsb r4, [r0, r4] @ tmp142, +@ SpellSystem.c:184: if ( gBattleTarget.levelPrevious != gBattleTarget.unit.level ) { subject = &gBattleTarget; } + ldrb r2, [r2] @ _17, +@ SpellSystem.c:184: if ( gBattleTarget.levelPrevious != gBattleTarget.unit.level ) { subject = &gBattleTarget; } + ldrsb r1, [r3, r1] @ _8,* _8 +@ SpellSystem.c:183: if ( gBattleActor.levelPrevious != gBattleActor.unit.level ) { subject = &gBattleActor; } + cmp r5, r4 @ tmp140, tmp142 + bne .L131 @, +@ SpellSystem.c:184: if ( gBattleTarget.levelPrevious != gBattleTarget.unit.level ) { subject = &gBattleTarget; } + cmp r1, r2 @ _8, _17 + bne .L135 @, .L134: -@ SpellSystem.c:176: if ( !subject ) { return 0; } // If this isn't filled, we shouldn't show a popup. +@ SpellSystem.c:185: if ( !subject ) { return 0; } // If this isn't filled, we shouldn't show a popup. movs r0, #0 @ , .L130: -@ SpellSystem.c:185: } +@ SpellSystem.c:194: } @ sp needed @ - pop {r4} + pop {r4, r5, r6} pop {r1} bx r1 -.L136: -@ SpellSystem.c:175: if ( gBattleTarget.levelPrevious != gBattleTarget.unit.level ) { subject = &gBattleTarget; } - movs r0, r3 @ subject, tmp138 +.L131: +@ SpellSystem.c:184: if ( gBattleTarget.levelPrevious != gBattleTarget.unit.level ) { subject = &gBattleTarget; } + cmp r1, r2 @ _8, _17 + beq .L132 @, +.L135: +@ SpellSystem.c:184: if ( gBattleTarget.levelPrevious != gBattleTarget.unit.level ) { subject = &gBattleTarget; } + movs r0, r3 @ subject, tmp131 .L132: -@ SpellSystem.c:178: u8* spells = SpellsGetterForLevel(&subject->unit,subject->unit.level,-1); - movs r1, #8 @ tmp146, +@ SpellSystem.c:187: u8* spells = SpellsGetterForLevel(&subject->unit,subject->unit.level,-1); + movs r1, #8 @ tmp144, movs r2, #1 @, - ldrsb r1, [r0, r1] @ tmp146, + ldrsb r1, [r0, r1] @ tmp144, rsbs r2, r2, #0 @, bl SpellsGetterForLevel @ -@ SpellSystem.c:180: if ( *spells ) - ldrb r2, [r0] @ _12, *spells_22 -@ SpellSystem.c:180: if ( *spells ) - cmp r2, #0 @ _12, +@ SpellSystem.c:189: if ( *spells ) + ldrb r1, [r0] @ _12, *spells_23 +@ SpellSystem.c:189: if ( *spells ) + cmp r1, #0 @ _12, beq .L134 @, -@ SpellSystem.c:182: gPopupItem = *spells|0xFF00; - ldr r3, .L140+8 @ tmp150, - orrs r3, r2 @ tmp149, _12 -@ SpellSystem.c:182: gPopupItem = *spells|0xFF00; - ldr r2, .L140+12 @ tmp147, -@ SpellSystem.c:183: return 1; +@ SpellSystem.c:191: gPopupItem = *spells|0xFF00; + ldr r2, .L140+16 @ tmp148, +@ SpellSystem.c:191: gPopupItem = *spells|0xFF00; + ldr r3, .L140+20 @ tmp145, +@ SpellSystem.c:191: gPopupItem = *spells|0xFF00; + orrs r2, r1 @ tmp147, _12 +@ SpellSystem.c:192: return 1; movs r0, #1 @ , -@ SpellSystem.c:182: gPopupItem = *spells|0xFF00; - strh r3, [r2] @ tmp149, gPopupItem -@ SpellSystem.c:183: return 1; +@ SpellSystem.c:191: gPopupItem = *spells|0xFF00; + strh r2, [r3] @ tmp147, gPopupItem +@ SpellSystem.c:192: return 1; b .L130 @ .L141: .align 2 .L140: + .word gBattleActor+112 .word gBattleActor .word gBattleTarget + .word gBattleTarget+112 .word -256 .word gPopupItem .size InitGaidenSpellLearnPopup, .-InitGaidenSpellLearnPopup @@ -1106,23 +1050,22 @@ InitGaidenSpellLearnPopup: .syntax unified .code 16 .thumb_func - .fpu softvfp .type GetSpellCost, %function GetSpellCost: @ Function supports interworking. @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 push {r4, lr} @ -@ SpellSystem.c:288: return GaidenSpellCostTable[GetItemIndex(spell)]; +@ SpellSystem.c:297: return GaidenSpellCostTable[GetItemIndex(spell)]; ldr r3, .L143 @ tmp118, -@ SpellSystem.c:289: } +@ SpellSystem.c:298: } @ sp needed @ -@ SpellSystem.c:288: return GaidenSpellCostTable[GetItemIndex(spell)]; +@ SpellSystem.c:297: return GaidenSpellCostTable[GetItemIndex(spell)]; bl .L14 @ -@ SpellSystem.c:288: return GaidenSpellCostTable[GetItemIndex(spell)]; +@ SpellSystem.c:297: return GaidenSpellCostTable[GetItemIndex(spell)]; ldr r3, .L143+4 @ tmp122, ldrb r0, [r3, r0] @ tmp121, GaidenSpellCostTable -@ SpellSystem.c:289: } +@ SpellSystem.c:298: } pop {r4} pop {r1} bx r1 @@ -1137,26 +1080,25 @@ GetSpellCost: .syntax unified .code 16 .thumb_func - .fpu softvfp .type HasSufficientHP, %function HasSufficientHP: @ Function supports interworking. @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 push {r4, lr} @ -@ SpellSystem.c:190: return unit->curHP > GetSpellCost(spell); +@ SpellSystem.c:199: return unit->curHP > GetSpellCost(spell); movs r4, #19 @ _2, ldrsb r4, [r0, r4] @ _2,* _2 -@ SpellSystem.c:190: return unit->curHP > GetSpellCost(spell); +@ SpellSystem.c:199: return unit->curHP > GetSpellCost(spell); movs r0, r1 @, spell bl GetSpellCost @ -@ SpellSystem.c:190: return unit->curHP > GetSpellCost(spell); +@ SpellSystem.c:199: return unit->curHP > GetSpellCost(spell); movs r3, #1 @ tmp121, cmp r4, r0 @ _2, tmp130 bgt .L146 @, movs r3, #0 @ tmp121, .L146: -@ SpellSystem.c:191: } +@ SpellSystem.c:200: } @ sp needed @ movs r0, r3 @, tmp121 pop {r4} @@ -1167,7 +1109,6 @@ HasSufficientHP: .syntax unified .code 16 .thumb_func - .fpu softvfp .type GaidenMagicUMUsabilityExt, %function GaidenMagicUMUsabilityExt: @ Function supports interworking. @@ -1179,13 +1120,13 @@ GaidenMagicUMUsabilityExt: @ UnitMenu.c:21: if ( !CanCastSpellNow(gActiveUnit,spellList[i]|0xFF00) ) { continue; } movs r7, #255 @ tmp142, @ UnitMenu.c:17: { - movs r5, r0 @ ivtmp.275, tmp143 + movs r5, r0 @ ivtmp.276, tmp143 movs r4, r6 @ validList, validList @ UnitMenu.c:21: if ( !CanCastSpellNow(gActiveUnit,spellList[i]|0xFF00) ) { continue; } lsls r7, r7, #8 @ tmp142, tmp142, .L148: @ UnitMenu.c:19: for ( int i = 0 ; spellList[i] ; i++ ) - ldrb r1, [r5] @ _9, MEM[base: _42, offset: 0B] + ldrb r1, [r5] @ _9, MEM[(u8 *)_42] @ UnitMenu.c:19: for ( int i = 0 ; spellList[i] ; i++ ) cmp r1, #0 @ _9, bne .L150 @, @@ -1200,7 +1141,7 @@ GaidenMagicUMUsabilityExt: beq .L147 @, .L152: @ UnitMenu.c:29: for ( int i = 0 ; validList[i] ; i++ ) - ldrb r1, [r4] @ _30, MEM[base: _37, offset: 0B] + ldrb r1, [r4] @ _30, MEM[(u8 *)_37] @ UnitMenu.c:29: for ( int i = 0 ; validList[i] ; i++ ) cmp r1, #0 @ _30, bne .L153 @, @@ -1222,13 +1163,13 @@ GaidenMagicUMUsabilityExt: cmp r0, #0 @ tmp144, beq .L149 @, @ UnitMenu.c:22: *validList = spellList[i]; - ldrb r3, [r5] @ _6, MEM[base: _42, offset: 0B] + ldrb r3, [r5] @ _6, MEM[(u8 *)_42] @ UnitMenu.c:22: *validList = spellList[i]; strb r3, [r6] @ _6, *validList_15 @ UnitMenu.c:23: validList++; adds r6, r6, #1 @ validList, .L149: - adds r5, r5, #1 @ ivtmp.275, + adds r5, r5, #1 @ ivtmp.276, b .L148 @ .L153: @ UnitMenu.c:32: if ( HasSufficientHP(gActiveUnit,validList[i]) ) { return 1; } // We've found a spell we can cast! Return usable. @@ -1236,7 +1177,7 @@ GaidenMagicUMUsabilityExt: ldr r0, [r3] @, gActiveUnit bl HasSufficientHP @ @ UnitMenu.c:32: if ( HasSufficientHP(gActiveUnit,validList[i]) ) { return 1; } // We've found a spell we can cast! Return usable. - adds r4, r4, #1 @ ivtmp.271, + adds r4, r4, #1 @ ivtmp.272, cmp r0, #0 @ tmp145, beq .L152 @, @ UnitMenu.c:32: if ( HasSufficientHP(gActiveUnit,validList[i]) ) { return 1; } // We've found a spell we can cast! Return usable. @@ -1253,7 +1194,6 @@ GaidenMagicUMUsabilityExt: .syntax unified .code 16 .thumb_func - .fpu softvfp .type GaidenBlackMagicUMUsability, %function GaidenBlackMagicUMUsability: @ Function supports interworking. @@ -1283,7 +1223,6 @@ GaidenBlackMagicUMUsability: .syntax unified .code 16 .thumb_func - .fpu softvfp .type GaidenWhiteMagicUMUsability, %function GaidenWhiteMagicUMUsability: @ Function supports interworking. @@ -1313,59 +1252,49 @@ GaidenWhiteMagicUMUsability: .syntax unified .code 16 .thumb_func - .fpu softvfp .type SetRoundForSpell, %function SetRoundForSpell: @ Function supports interworking. @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 push {r4, r5, r6, lr} @ -@ SpellSystem.c:153: if ( HasSufficientHP(&unit->unit,unit->weapon) ) - movs r6, r0 @ tmp137, unit - adds r6, r6, #72 @ tmp137, -@ SpellSystem.c:152: { - movs r4, r1 @ buffer, tmp159 -@ SpellSystem.c:153: if ( HasSufficientHP(&unit->unit,unit->weapon) ) - ldrh r1, [r6] @ tmp138, -@ SpellSystem.c:152: { - movs r5, r0 @ unit, tmp158 -@ SpellSystem.c:153: if ( HasSufficientHP(&unit->unit,unit->weapon) ) +@ SpellSystem.c:163: if ( HasSufficientHP(&unit->unit,unit->weapon) ) + movs r5, r0 @ tmp133, unit + adds r5, r5, #72 @ tmp133, +@ SpellSystem.c:162: { + movs r4, r1 @ buffer, tmp151 +@ SpellSystem.c:163: if ( HasSufficientHP(&unit->unit,unit->weapon) ) + ldrh r1, [r5] @ tmp134, bl HasSufficientHP @ -@ SpellSystem.c:153: if ( HasSufficientHP(&unit->unit,unit->weapon) ) - cmp r0, #0 @ tmp160, +@ SpellSystem.c:163: if ( HasSufficientHP(&unit->unit,unit->weapon) ) + cmp r0, #0 @ tmp152, beq .L168 @, -@ SpellSystem.c:155: int cost = GetSpellCost(unit->weapon); - ldrh r0, [r6] @ tmp142, +@ SpellSystem.c:165: int cost = GetSpellCost(unit->weapon); + ldrh r0, [r5] @ MEM[(short unsigned int *)unit_7(D) + 72B], MEM[(short unsigned int *)unit_7(D) + 72B] bl GetSpellCost @ -@ SpellSystem.c:157: buffer->attributes |= BATTLE_HIT_ATTR_HPSTEAL; // "HP drain" bit. - movs r3, #128 @ tmp145, - ldr r2, [r4] @ tmp164,* buffer - lsls r3, r3, #1 @ tmp145, tmp145, - orrs r3, r2 @ tmp143, tmp164 - str r3, [r4] @ tmp143,* buffer -@ SpellSystem.c:159: unit->unit.curHP -= cost; - lsls r3, r0, #24 @ _21, tmp161, - ldrb r2, [r5, #19] @ tmp148, - lsrs r3, r3, #24 @ _21, _21, - subs r2, r2, r3 @ tmp149, tmp148, _21 - strb r2, [r5, #19] @ tmp149, unit_8(D)->unit.curHP -@ SpellSystem.c:160: buffer->damage -= cost; - ldrb r0, [r4, #5] @ tmp152, - subs r3, r0, r3 @ tmp153, tmp152, _21 - strb r3, [r4, #5] @ tmp153, buffer_11(D)->damage +@ SpellSystem.c:167: buffer->attributes |= BATTLE_HIT_ATTR_HPSTEAL; // "HP drain" bit. + movs r3, #128 @ tmp141, + ldr r2, [r4] @ tmp140,* buffer + lsls r3, r3, #1 @ tmp141, tmp141, + orrs r3, r2 @ tmp139, tmp140 + str r3, [r4] @ tmp139,* buffer +@ SpellSystem.c:169: buffer->damage -= cost; + ldrb r3, [r4, #5] @ tmp143, + subs r3, r3, r0 @ tmp145, tmp143, tmp153 + strb r3, [r4, #5] @ tmp145, buffer_10(D)->damage .L167: -@ SpellSystem.c:167: } +@ SpellSystem.c:176: } @ sp needed @ pop {r4, r5, r6} pop {r0} bx r0 .L168: -@ SpellSystem.c:165: buffer->attributes |= BATTLE_HIT_ATTR_5; // This bit is checked in an external hack I've made. - movs r3, #32 @ tmp157, - ldr r2, [r4] @ tmp165,* buffer - orrs r3, r2 @ tmp155, tmp165 - str r3, [r4] @ tmp155,* buffer -@ SpellSystem.c:167: } +@ SpellSystem.c:174: buffer->attributes |= BATTLE_HIT_ATTR_5; // This bit is checked in an external hack I've made. + movs r3, #32 @ tmp149, + ldr r2, [r4] @ tmp148,* buffer + orrs r3, r2 @ tmp147, tmp148 + str r3, [r4] @ tmp147,* buffer +@ SpellSystem.c:176: } b .L167 @ .size SetRoundForSpell, .-SetRoundForSpell .align 1 @@ -1373,29 +1302,28 @@ SetRoundForSpell: .syntax unified .code 16 .thumb_func - .fpu softvfp .type Proc_GaidenMagicHPCost, %function Proc_GaidenMagicHPCost: @ Function supports interworking. @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 push {r4, r5, r6, lr} @ -@ SpellSystem.c:145: if ( GetUnitEquippedWeaponSlot(&attacker->unit) == 9 ) // Instead of checking against UsingSpellMenu, we do this to cover the case of defense. +@ SpellSystem.c:155: if ( GetUnitEquippedWeaponSlot(&attacker->unit) == 9 ) // Instead of checking against UsingSpellMenu, we do this to cover the case of defense. ldr r3, .L172 @ tmp119, -@ SpellSystem.c:143: { +@ SpellSystem.c:153: { movs r4, r0 @ attacker, tmp120 movs r5, r2 @ buffer, tmp121 -@ SpellSystem.c:145: if ( GetUnitEquippedWeaponSlot(&attacker->unit) == 9 ) // Instead of checking against UsingSpellMenu, we do this to cover the case of defense. +@ SpellSystem.c:155: if ( GetUnitEquippedWeaponSlot(&attacker->unit) == 9 ) // Instead of checking against UsingSpellMenu, we do this to cover the case of defense. bl .L14 @ -@ SpellSystem.c:145: if ( GetUnitEquippedWeaponSlot(&attacker->unit) == 9 ) // Instead of checking against UsingSpellMenu, we do this to cover the case of defense. +@ SpellSystem.c:155: if ( GetUnitEquippedWeaponSlot(&attacker->unit) == 9 ) // Instead of checking against UsingSpellMenu, we do this to cover the case of defense. cmp r0, #9 @ tmp122, bne .L170 @, -@ SpellSystem.c:147: SetRoundForSpell(attacker,buffer); +@ SpellSystem.c:157: SetRoundForSpell(attacker,buffer); movs r1, r5 @, buffer movs r0, r4 @, attacker bl SetRoundForSpell @ .L170: -@ SpellSystem.c:149: } +@ SpellSystem.c:159: } @ sp needed @ pop {r4, r5, r6} pop {r0} @@ -1410,38 +1338,37 @@ Proc_GaidenMagicHPCost: .syntax unified .code 16 .thumb_func - .fpu softvfp .type GetFirstAttackSpell, %function GetFirstAttackSpell: @ Function supports interworking. @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 -@ SpellSystem.c:293: u8* spells = SpellsGetter(unit,-1); +@ SpellSystem.c:302: u8* spells = SpellsGetter(unit,-1); movs r1, #1 @, -@ SpellSystem.c:292: { +@ SpellSystem.c:301: { push {r4, r5, r6, lr} @ -@ SpellSystem.c:293: u8* spells = SpellsGetter(unit,-1); +@ SpellSystem.c:302: u8* spells = SpellsGetter(unit,-1); rsbs r1, r1, #0 @, bl SpellsGetter @ - movs r4, r0 @ ivtmp.295, tmp126 + movs r4, r0 @ ivtmp.297, tmp126 .L175: -@ SpellSystem.c:295: for ( int i = 0 ; spells[i] ; i++ ) - ldrb r0, [r4] @ _7, MEM[base: _6, offset: 0B] - movs r5, r4 @ _6, ivtmp.295 -@ SpellSystem.c:295: for ( int i = 0 ; spells[i] ; i++ ) +@ SpellSystem.c:304: for ( int i = 0 ; spells[i] ; i++ ) + ldrb r0, [r4] @ _7, MEM[(u8 *)_6] + movs r5, r4 @ _6, ivtmp.297 +@ SpellSystem.c:304: for ( int i = 0 ; spells[i] ; i++ ) cmp r0, #0 @ _7, beq .L174 @, -@ SpellSystem.c:297: if ( GetItemType(spells[i]) != ITYPE_STAFF ) { spell = spells[i]; break; } // Ensure that the spell we could counter with would be an attack spell. +@ SpellSystem.c:306: if ( GetItemType(spells[i]) != ITYPE_STAFF ) { spell = spells[i]; break; } // Ensure that the spell we could counter with would be an attack spell. ldr r3, .L180 @ tmp123, bl .L14 @ -@ SpellSystem.c:297: if ( GetItemType(spells[i]) != ITYPE_STAFF ) { spell = spells[i]; break; } // Ensure that the spell we could counter with would be an attack spell. - adds r4, r4, #1 @ ivtmp.295, +@ SpellSystem.c:306: if ( GetItemType(spells[i]) != ITYPE_STAFF ) { spell = spells[i]; break; } // Ensure that the spell we could counter with would be an attack spell. + adds r4, r4, #1 @ ivtmp.297, cmp r0, #4 @ tmp127, beq .L175 @, -@ SpellSystem.c:297: if ( GetItemType(spells[i]) != ITYPE_STAFF ) { spell = spells[i]; break; } // Ensure that the spell we could counter with would be an attack spell. +@ SpellSystem.c:306: if ( GetItemType(spells[i]) != ITYPE_STAFF ) { spell = spells[i]; break; } // Ensure that the spell we could counter with would be an attack spell. ldrb r0, [r5] @ , *_6 .L174: -@ SpellSystem.c:300: } +@ SpellSystem.c:309: } @ sp needed @ pop {r4, r5, r6} pop {r1} @@ -1456,7 +1383,6 @@ GetFirstAttackSpell: .syntax unified .code 16 .thumb_func - .fpu softvfp .type NewGetUnitEquippedWeapon, %function NewGetUnitEquippedWeapon: @ Function supports interworking. @@ -1464,31 +1390,31 @@ NewGetUnitEquippedWeapon: @ frame_needed = 0, uses_anonymous_args = 0 push {r4, r5, r6, lr} @ @ SpellSystem.c:45: { - movs r6, r0 @ unit, tmp163 -@ SpellSystem.c:260: for ( int i = 0 ; i < 5 ; i++ ) + movs r6, r0 @ unit, tmp162 +@ SpellSystem.c:269: for ( int i = 0 ; i < 5 ; i++ ) movs r5, #0 @ i, .L185: -@ SpellSystem.c:262: if ( CanUnitUseWeapon(unit,unit->items[i]) ) { return unit->items[i]; } +@ SpellSystem.c:271: if ( CanUnitUseWeapon(unit,unit->items[i]) ) { return unit->items[i]; } movs r3, r6 @ tmp135, unit -@ SpellSystem.c:262: if ( CanUnitUseWeapon(unit,unit->items[i]) ) { return unit->items[i]; } +@ SpellSystem.c:271: if ( CanUnitUseWeapon(unit,unit->items[i]) ) { return unit->items[i]; } lsls r2, r5, #1 @ tmp136, i, -@ SpellSystem.c:262: if ( CanUnitUseWeapon(unit,unit->items[i]) ) { return unit->items[i]; } +@ SpellSystem.c:271: if ( CanUnitUseWeapon(unit,unit->items[i]) ) { return unit->items[i]; } adds r3, r3, #30 @ tmp135, - ldrh r1, [r3, r2] @ MEM[base: _28, index: _37, offset: 0B], MEM[base: _28, index: _37, offset: 0B] + ldrh r1, [r3, r2] @ MEM[(short unsigned int *)_7 + _22 * 1], MEM[(short unsigned int *)_7 + _22 * 1] movs r0, r6 @, unit - ldr r3, .L200 @ tmp138, + ldr r3, .L199 @ tmp138, bl .L14 @ - subs r4, r0, #0 @ , tmp164, -@ SpellSystem.c:262: if ( CanUnitUseWeapon(unit,unit->items[i]) ) { return unit->items[i]; } + subs r4, r0, #0 @ , tmp163, +@ SpellSystem.c:271: if ( CanUnitUseWeapon(unit,unit->items[i]) ) { return unit->items[i]; } beq .L183 @, -@ SpellSystem.c:262: if ( CanUnitUseWeapon(unit,unit->items[i]) ) { return unit->items[i]; } +@ SpellSystem.c:271: if ( CanUnitUseWeapon(unit,unit->items[i]) ) { return unit->items[i]; } adds r5, r5, #12 @ tmp139, lsls r5, r5, #1 @ tmp140, tmp139, adds r5, r6, r5 @ tmp141, unit, tmp140 - ldrh r4, [r5, #6] @ , *unit_19(D) + ldrh r4, [r5, #6] @ , *unit_20(D) .L184: @ SpellSystem.c:47: if ( gChapterData.currentPhase == ( unit->index & 0xC0 ) ) - ldr r3, .L200+4 @ tmp143, + ldr r3, .L199+4 @ tmp143, @ SpellSystem.c:47: if ( gChapterData.currentPhase == ( unit->index & 0xC0 ) ) movs r2, #11 @ _3, @ SpellSystem.c:47: if ( gChapterData.currentPhase == ( unit->index & 0xC0 ) ) @@ -1503,71 +1429,76 @@ NewGetUnitEquippedWeapon: cmp r1, r3 @ tmp144, tmp145 bne .L186 @, @ SpellSystem.c:50: if ( !UsingSpellMenu ) { return vanillaEquipped; } - ldr r3, .L200+8 @ tmp147, + ldr r3, .L199+8 @ tmp147, @ SpellSystem.c:50: if ( !UsingSpellMenu ) { return vanillaEquipped; } ldrb r3, [r3] @ UsingSpellMenu, UsingSpellMenu cmp r3, #0 @ UsingSpellMenu, beq .L182 @, @ SpellSystem.c:54: if ( unit->index == gBattleTarget.unit.index && GetItemType(SelectedSpell) == ITYPE_STAFF ) - ldr r3, .L200+12 @ tmp149, + ldr r3, .L199+12 @ tmp150, +@ SpellSystem.c:54: if ( unit->index == gBattleTarget.unit.index && GetItemType(SelectedSpell) == ITYPE_STAFF ) + ldrb r3, [r3, #11] @ tmp151, +@ SpellSystem.c:54: if ( unit->index == gBattleTarget.unit.index && GetItemType(SelectedSpell) == ITYPE_STAFF ) + ldr r5, .L199+16 @ tmp149, +@ SpellSystem.c:54: if ( unit->index == gBattleTarget.unit.index && GetItemType(SelectedSpell) == ITYPE_STAFF ) + lsls r3, r3, #24 @ tmp151, tmp151, @ SpellSystem.c:54: if ( unit->index == gBattleTarget.unit.index && GetItemType(SelectedSpell) == ITYPE_STAFF ) - ldrb r3, [r3, #11] @ tmp150, - lsls r3, r3, #24 @ tmp150, tmp150, - ldr r5, .L200+16 @ tmp162, - asrs r3, r3, #24 @ tmp150, tmp150, - cmp r3, r2 @ tmp150, _3 + ldrb r0, [r5] @ pretmp_21, SelectedSpell +@ SpellSystem.c:54: if ( unit->index == gBattleTarget.unit.index && GetItemType(SelectedSpell) == ITYPE_STAFF ) + asrs r3, r3, #24 @ tmp151, tmp151, + cmp r3, r2 @ tmp151, _3 beq .L188 @, -.L189: +.L190: @ SpellSystem.c:57: } else { return SelectedSpell|0xFF00; } - movs r4, #255 @ tmp153, - ldrb r0, [r5] @ SelectedSpell, SelectedSpell - lsls r4, r4, #8 @ tmp153, tmp153, - orrs r4, r0 @ , SelectedSpell -.L182: -@ SpellSystem.c:72: } - movs r0, r4 @, - @ sp needed @ - pop {r4, r5, r6} - pop {r1} - bx r1 + movs r4, #255 @ tmp154, + ldrb r3, [r5] @ SelectedSpell, SelectedSpell + lsls r4, r4, #8 @ tmp154, tmp154, +.L198: +@ SpellSystem.c:68: return ( spell ? spell|0xFF00 : 0 ); + orrs r4, r3 @ , tmp159 + b .L182 @ .L183: -@ SpellSystem.c:260: for ( int i = 0 ; i < 5 ; i++ ) +@ SpellSystem.c:269: for ( int i = 0 ; i < 5 ; i++ ) adds r5, r5, #1 @ i, -@ SpellSystem.c:260: for ( int i = 0 ; i < 5 ; i++ ) +@ SpellSystem.c:269: for ( int i = 0 ; i < 5 ; i++ ) cmp r5, #5 @ i, bne .L185 @, b .L184 @ .L188: @ SpellSystem.c:54: if ( unit->index == gBattleTarget.unit.index && GetItemType(SelectedSpell) == ITYPE_STAFF ) - ldrb r0, [r5] @ SelectedSpell, SelectedSpell - ldr r3, .L200+20 @ tmp156, + ldr r3, .L199+20 @ tmp155, bl .L14 @ @ SpellSystem.c:54: if ( unit->index == gBattleTarget.unit.index && GetItemType(SelectedSpell) == ITYPE_STAFF ) - cmp r0, #4 @ tmp165, - bne .L189 @, - b .L182 @ + cmp r0, #4 @ tmp164, + bne .L190 @, +.L182: +@ SpellSystem.c:72: } + @ sp needed @ + movs r0, r4 @, + pop {r4, r5, r6} + pop {r1} + bx r1 .L186: @ SpellSystem.c:64: if ( GetUnitEquippedWeaponSlot(unit) == 9 ) movs r0, r6 @, unit - ldr r3, .L200+24 @ tmp157, + ldr r3, .L199+24 @ tmp156, bl .L14 @ @ SpellSystem.c:64: if ( GetUnitEquippedWeaponSlot(unit) == 9 ) - cmp r0, #9 @ tmp166, + cmp r0, #9 @ tmp165, bne .L182 @, @ SpellSystem.c:67: int spell = GetFirstAttackSpell(unit); movs r0, r6 @, unit bl GetFirstAttackSpell @ - subs r4, r0, #0 @ , tmp167, + subs r4, r0, #0 @ , tmp166, @ SpellSystem.c:68: return ( spell ? spell|0xFF00 : 0 ); beq .L182 @, @ SpellSystem.c:68: return ( spell ? spell|0xFF00 : 0 ); - movs r3, #255 @ tmp160, - lsls r3, r3, #8 @ tmp160, tmp160, - orrs r4, r3 @ , tmp160 - b .L182 @ -.L201: - .align 2 + movs r3, #255 @ tmp159, + lsls r3, r3, #8 @ tmp159, tmp159, + b .L198 @ .L200: + .align 2 +.L199: .word CanUnitUseWeapon .word gChapterData .word UsingSpellMenu @@ -1581,27 +1512,26 @@ NewGetUnitEquippedWeapon: .syntax unified .code 16 .thumb_func - .fpu softvfp .type NewGetUnitEquippedWeaponSlot, %function NewGetUnitEquippedWeaponSlot: @ Function supports interworking. @ args = 0, pretend = 0, frame = 8 @ frame_needed = 0, uses_anonymous_args = 0 push {r0, r1, r2, r4, r5, r6, r7, lr} @ -@ SpellSystem.c:77: if ( UsingSpellMenu && unit->index == gBattleActor.unit.index && CanUnitUseWeapon(unit,SelectedSpell) ) { return 9; } - ldr r3, .L219 @ tmp144, -@ SpellSystem.c:77: if ( UsingSpellMenu && unit->index == gBattleActor.unit.index && CanUnitUseWeapon(unit,SelectedSpell) ) { return 9; } +@ SpellSystem.c:87: if ( UsingSpellMenu && unit->index == gBattleActor.unit.index && CanUnitUseWeapon(unit,SelectedSpell) ) { return 9; } + ldr r3, .L218 @ tmp144, +@ SpellSystem.c:87: if ( UsingSpellMenu && unit->index == gBattleActor.unit.index && CanUnitUseWeapon(unit,SelectedSpell) ) { return 9; } ldrb r3, [r3] @ UsingSpellMenu, UsingSpellMenu -@ SpellSystem.c:75: { +@ SpellSystem.c:85: { movs r5, r0 @ unit, tmp185 - ldr r6, .L219+4 @ tmp181, -@ SpellSystem.c:77: if ( UsingSpellMenu && unit->index == gBattleActor.unit.index && CanUnitUseWeapon(unit,SelectedSpell) ) { return 9; } + ldr r6, .L218+4 @ tmp181, +@ SpellSystem.c:87: if ( UsingSpellMenu && unit->index == gBattleActor.unit.index && CanUnitUseWeapon(unit,SelectedSpell) ) { return 9; } cmp r3, #0 @ UsingSpellMenu, - bne .L203 @, -.L206: -@ SpellSystem.c:79: if ( (gBattleStats.config & (BATTLE_CONFIG_REAL|BATTLE_CONFIG_SIMULATE)) && unit->index == gBattleTarget.unit.index ) - ldr r7, .L219+8 @ tmp146, -@ SpellSystem.c:79: if ( (gBattleStats.config & (BATTLE_CONFIG_REAL|BATTLE_CONFIG_SIMULATE)) && unit->index == gBattleTarget.unit.index ) + bne .L202 @, +.L205: +@ SpellSystem.c:89: if ( (gBattleStats.config & (BATTLE_CONFIG_REAL|BATTLE_CONFIG_SIMULATE)) && unit->index == gBattleTarget.unit.index ) + ldr r7, .L218+8 @ tmp146, +@ SpellSystem.c:89: if ( (gBattleStats.config & (BATTLE_CONFIG_REAL|BATTLE_CONFIG_SIMULATE)) && unit->index == gBattleTarget.unit.index ) ldrh r2, [r7] @ gBattleStats, gBattleStats movs r1, r5 @ tmp183, unit movs r3, #3 @ tmp150, @@ -1610,117 +1540,121 @@ NewGetUnitEquippedWeaponSlot: str r1, [sp, #4] @ tmp183, %sfp ands r4, r3 @ tmp152, tmp150 tst r2, r3 @ gBattleStats, tmp150 - bne .L204 @, -.L211: -@ SpellSystem.c:102: if ( CanUnitUseWeapon(unit,unit->items[i]) ) { return i; } + bne .L203 @, +.L210: +@ SpellSystem.c:112: if ( CanUnitUseWeapon(unit,unit->items[i]) ) { return i; } ldr r2, [sp, #4] @ tmp183, %sfp -@ SpellSystem.c:102: if ( CanUnitUseWeapon(unit,unit->items[i]) ) { return i; } +@ SpellSystem.c:112: if ( CanUnitUseWeapon(unit,unit->items[i]) ) { return i; } lsls r3, r4, #1 @ tmp177, , -@ SpellSystem.c:102: if ( CanUnitUseWeapon(unit,unit->items[i]) ) { return i; } +@ SpellSystem.c:112: if ( CanUnitUseWeapon(unit,unit->items[i]) ) { return i; } movs r0, r5 @, unit - ldrh r1, [r2, r3] @ MEM[base: _41, index: _48, offset: 0B], MEM[base: _41, index: _48, offset: 0B] + ldrh r1, [r2, r3] @ MEM[(short unsigned int *)_52 + _51 * 1], MEM[(short unsigned int *)_52 + _51 * 1] bl .L15 @ -@ SpellSystem.c:102: if ( CanUnitUseWeapon(unit,unit->items[i]) ) { return i; } +@ SpellSystem.c:112: if ( CanUnitUseWeapon(unit,unit->items[i]) ) { return i; } cmp r0, #0 @ tmp190, - bne .L202 @, -@ SpellSystem.c:100: for ( int i = 0 ; i < 5 ; i++ ) + bne .L201 @, +@ SpellSystem.c:110: for ( int i = 0 ; i < 5 ; i++ ) adds r4, r4, #1 @ , -@ SpellSystem.c:100: for ( int i = 0 ; i < 5 ; i++ ) +@ SpellSystem.c:110: for ( int i = 0 ; i < 5 ; i++ ) cmp r4, #5 @ , - bne .L211 @, - b .L212 @ -.L203: -@ SpellSystem.c:77: if ( UsingSpellMenu && unit->index == gBattleActor.unit.index && CanUnitUseWeapon(unit,SelectedSpell) ) { return 9; } + bne .L210 @, + b .L211 @ +.L202: +@ SpellSystem.c:87: if ( UsingSpellMenu && unit->index == gBattleActor.unit.index && CanUnitUseWeapon(unit,SelectedSpell) ) { return 9; } movs r2, #11 @ tmp155, - ldr r3, .L219+12 @ tmp154, +@ SpellSystem.c:87: if ( UsingSpellMenu && unit->index == gBattleActor.unit.index && CanUnitUseWeapon(unit,SelectedSpell) ) { return 9; } + ldr r3, .L218+12 @ tmp154, +@ SpellSystem.c:87: if ( UsingSpellMenu && unit->index == gBattleActor.unit.index && CanUnitUseWeapon(unit,SelectedSpell) ) { return 9; } ldrb r3, [r3, #11] @ tmp156, ldrsb r2, [r0, r2] @ tmp155, lsls r3, r3, #24 @ tmp156, tmp156, asrs r3, r3, #24 @ tmp156, tmp156, cmp r2, r3 @ tmp155, tmp156 - bne .L206 @, -@ SpellSystem.c:77: if ( UsingSpellMenu && unit->index == gBattleActor.unit.index && CanUnitUseWeapon(unit,SelectedSpell) ) { return 9; } - ldr r3, .L219+16 @ tmp157, + bne .L205 @, +@ SpellSystem.c:87: if ( UsingSpellMenu && unit->index == gBattleActor.unit.index && CanUnitUseWeapon(unit,SelectedSpell) ) { return 9; } + ldr r3, .L218+16 @ tmp157, ldrb r1, [r3] @ SelectedSpell, SelectedSpell bl .L15 @ -@ SpellSystem.c:77: if ( UsingSpellMenu && unit->index == gBattleActor.unit.index && CanUnitUseWeapon(unit,SelectedSpell) ) { return 9; } +@ SpellSystem.c:87: if ( UsingSpellMenu && unit->index == gBattleActor.unit.index && CanUnitUseWeapon(unit,SelectedSpell) ) { return 9; } cmp r0, #0 @ tmp186, - beq .L206 @, -.L207: -@ SpellSystem.c:77: if ( UsingSpellMenu && unit->index == gBattleActor.unit.index && CanUnitUseWeapon(unit,SelectedSpell) ) { return 9; } + beq .L205 @, +.L206: +@ SpellSystem.c:87: if ( UsingSpellMenu && unit->index == gBattleActor.unit.index && CanUnitUseWeapon(unit,SelectedSpell) ) { return 9; } movs r4, #9 @ , - b .L202 @ -.L204: -@ SpellSystem.c:79: if ( (gBattleStats.config & (BATTLE_CONFIG_REAL|BATTLE_CONFIG_SIMULATE)) && unit->index == gBattleTarget.unit.index ) + b .L201 @ +.L203: +@ SpellSystem.c:89: if ( (gBattleStats.config & (BATTLE_CONFIG_REAL|BATTLE_CONFIG_SIMULATE)) && unit->index == gBattleTarget.unit.index ) movs r2, #11 @ tmp161, - ldr r3, .L219+20 @ tmp160, +@ SpellSystem.c:89: if ( (gBattleStats.config & (BATTLE_CONFIG_REAL|BATTLE_CONFIG_SIMULATE)) && unit->index == gBattleTarget.unit.index ) + ldr r3, .L218+20 @ tmp160, +@ SpellSystem.c:89: if ( (gBattleStats.config & (BATTLE_CONFIG_REAL|BATTLE_CONFIG_SIMULATE)) && unit->index == gBattleTarget.unit.index ) ldrb r3, [r3, #11] @ tmp162, ldrsb r2, [r5, r2] @ tmp161, lsls r3, r3, #24 @ tmp162, tmp162, movs r4, #0 @ , asrs r3, r3, #24 @ tmp162, tmp162, cmp r2, r3 @ tmp161, tmp162 - bne .L211 @, -@ SpellSystem.c:81: int spell = GetFirstAttackSpell(unit); + bne .L210 @, +@ SpellSystem.c:91: int spell = GetFirstAttackSpell(unit); movs r0, r5 @, unit bl GetFirstAttackSpell @ str r0, [sp] @ tmp187, %sfp -.L210: -@ SpellSystem.c:86: if ( CanUnitUseWeapon(unit,unit->items[i]) ) +.L209: +@ SpellSystem.c:96: if ( CanUnitUseWeapon(unit,unit->items[i]) ) ldr r2, [sp, #4] @ tmp183, %sfp -@ SpellSystem.c:86: if ( CanUnitUseWeapon(unit,unit->items[i]) ) +@ SpellSystem.c:96: if ( CanUnitUseWeapon(unit,unit->items[i]) ) lsls r3, r4, #1 @ tmp164, , -@ SpellSystem.c:86: if ( CanUnitUseWeapon(unit,unit->items[i]) ) +@ SpellSystem.c:96: if ( CanUnitUseWeapon(unit,unit->items[i]) ) movs r0, r5 @, unit - ldrh r1, [r2, r3] @ MEM[base: _49, index: _23, offset: 0B], MEM[base: _49, index: _23, offset: 0B] + ldrh r1, [r2, r3] @ MEM[(short unsigned int *)_48 + _8 * 1], MEM[(short unsigned int *)_48 + _8 * 1] bl .L15 @ -@ SpellSystem.c:86: if ( CanUnitUseWeapon(unit,unit->items[i]) ) +@ SpellSystem.c:96: if ( CanUnitUseWeapon(unit,unit->items[i]) ) cmp r0, #0 @ tmp188, - beq .L208 @, -@ SpellSystem.c:89: if ( !gCan_Attack_Target(unit->items[i],gBattleStats.range,unit) ) + beq .L207 @, +@ SpellSystem.c:99: if ( !gCan_Attack_Target(unit->items[i],gBattleStats.range,unit) ) movs r3, r4 @ tmp169, adds r3, r3, #12 @ tmp169, lsls r3, r3, #1 @ tmp170, tmp169, adds r3, r5, r3 @ tmp171, unit, tmp170 -@ SpellSystem.c:89: if ( !gCan_Attack_Target(unit->items[i],gBattleStats.range,unit) ) - ldrh r0, [r3, #6] @ tmp173, *unit_32(D) - ldr r3, .L219+24 @ tmp174, +@ SpellSystem.c:99: if ( !gCan_Attack_Target(unit->items[i],gBattleStats.range,unit) ) + ldrh r0, [r3, #6] @ tmp173, *unit_33(D) + ldr r3, .L218+24 @ tmp174, movs r2, r5 @, unit ldrb r1, [r7, #2] @ tmp168, ldr r3, [r3] @ gCan_Attack_Target, gCan_Attack_Target bl .L14 @ -@ SpellSystem.c:89: if ( !gCan_Attack_Target(unit->items[i],gBattleStats.range,unit) ) +@ SpellSystem.c:99: if ( !gCan_Attack_Target(unit->items[i],gBattleStats.range,unit) ) cmp r0, #0 @ tmp189, - bne .L202 @, -@ SpellSystem.c:91: return ( spell ? 9 : i ); + bne .L201 @, +@ SpellSystem.c:101: return ( spell ? 9 : i ); ldr r3, [sp] @ spell, %sfp cmp r3, #0 @ spell, - bne .L207 @, -.L202: -@ SpellSystem.c:106: } + bne .L206 @, +.L201: +@ SpellSystem.c:116: } @ sp needed @ movs r0, r4 @, pop {r1, r2, r3, r4, r5, r6, r7} pop {r1} bx r1 -.L208: -@ SpellSystem.c:84: for ( int i = 0 ; i < 5 ; i++ ) +.L207: +@ SpellSystem.c:94: for ( int i = 0 ; i < 5 ; i++ ) adds r4, r4, #1 @ , -@ SpellSystem.c:84: for ( int i = 0 ; i < 5 ; i++ ) +@ SpellSystem.c:94: for ( int i = 0 ; i < 5 ; i++ ) cmp r4, #5 @ , - bne .L210 @, -@ SpellSystem.c:96: return ( spell ? 9 : -1 ); + bne .L209 @, +@ SpellSystem.c:106: return ( spell ? 9 : -1 ); ldr r3, [sp] @ spell, %sfp cmp r3, #0 @ spell, - bne .L207 @, -.L212: -@ SpellSystem.c:96: return ( spell ? 9 : -1 ); + bne .L206 @, +.L211: +@ SpellSystem.c:106: return ( spell ? 9 : -1 ); movs r4, #1 @ , rsbs r4, r4, #0 @ , - b .L202 @ -.L220: - .align 2 + b .L201 @ .L219: + .align 2 +.L218: .word UsingSpellMenu .word CanUnitUseWeapon .word gBattleStats @@ -1734,52 +1668,51 @@ NewGetUnitEquippedWeaponSlot: .syntax unified .code 16 .thumb_func - .fpu softvfp .type Target_Routine_For_Fortify, %function Target_Routine_For_Fortify: @ Function supports interworking. @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 push {r4, lr} @ -@ SpellSystem.c:305: if ( UsingSpellMenu ) - ldr r3, .L224 @ tmp123, -@ SpellSystem.c:305: if ( UsingSpellMenu ) +@ SpellSystem.c:314: if ( UsingSpellMenu ) + ldr r3, .L223 @ tmp123, +@ SpellSystem.c:314: if ( UsingSpellMenu ) ldrb r3, [r3] @ UsingSpellMenu, UsingSpellMenu cmp r3, #0 @ UsingSpellMenu, - beq .L222 @, -@ SpellSystem.c:307: item = SelectedSpell|0xFF00; - ldr r3, .L224+4 @ tmp125, + beq .L221 @, +@ SpellSystem.c:316: item = SelectedSpell|0xFF00; + ldr r3, .L223+4 @ tmp125, ldrb r2, [r3] @ SelectedSpell, SelectedSpell -@ SpellSystem.c:307: item = SelectedSpell|0xFF00; +@ SpellSystem.c:316: item = SelectedSpell|0xFF00; movs r3, #255 @ tmp128, lsls r3, r3, #8 @ tmp128, tmp128, orrs r2, r3 @ item, tmp128 -.L223: -@ SpellSystem.c:313: gHealStaff_RangeSetup(unit,0,item); - ldr r3, .L224+8 @ tmp137, -@ SpellSystem.c:314: } +.L222: +@ SpellSystem.c:322: gHealStaff_RangeSetup(unit,0,item); + ldr r3, .L223+8 @ tmp137, +@ SpellSystem.c:323: } @ sp needed @ -@ SpellSystem.c:313: gHealStaff_RangeSetup(unit,0,item); +@ SpellSystem.c:322: gHealStaff_RangeSetup(unit,0,item); movs r1, #0 @, ldr r3, [r3] @ gHealStaff_RangeSetup, gHealStaff_RangeSetup bl .L14 @ -@ SpellSystem.c:314: } +@ SpellSystem.c:323: } pop {r4} pop {r0} bx r0 -.L222: -@ SpellSystem.c:311: item = unit->unit.items[gActionData.itemSlotIndex]; - ldr r3, .L224+12 @ tmp131, +.L221: +@ SpellSystem.c:320: item = unit->unit.items[gActionData.itemSlotIndex]; + ldr r3, .L223+12 @ tmp131, ldrb r3, [r3, #18] @ tmp132, -@ SpellSystem.c:311: item = unit->unit.items[gActionData.itemSlotIndex]; +@ SpellSystem.c:320: item = unit->unit.items[gActionData.itemSlotIndex]; adds r3, r3, #12 @ tmp133, lsls r3, r3, #1 @ tmp134, tmp133, adds r3, r0, r3 @ tmp135, unit, tmp134 ldrh r2, [r3, #6] @ item, *unit_11(D) - b .L223 @ -.L225: - .align 2 + b .L222 @ .L224: + .align 2 +.L223: .word UsingSpellMenu .word SelectedSpell .word gHealStaff_RangeSetup @@ -1790,31 +1723,30 @@ Target_Routine_For_Fortify: .syntax unified .code 16 .thumb_func - .fpu softvfp .type GaidenZeroOutSpellVariables, %function GaidenZeroOutSpellVariables: @ Function supports interworking. @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. -@ SpellSystem.c:318: UsingSpellMenu = 0; +@ SpellSystem.c:327: UsingSpellMenu = 0; movs r3, #0 @ tmp114, -@ SpellSystem.c:321: } +@ SpellSystem.c:330: } @ sp needed @ -@ SpellSystem.c:318: UsingSpellMenu = 0; - ldr r2, .L227 @ tmp113, +@ SpellSystem.c:327: UsingSpellMenu = 0; + ldr r2, .L226 @ tmp113, strb r3, [r2] @ tmp114, UsingSpellMenu -@ SpellSystem.c:319: SelectedSpell = 0; - ldr r2, .L227+4 @ tmp116, +@ SpellSystem.c:328: SelectedSpell = 0; + ldr r2, .L226+4 @ tmp116, strb r3, [r2] @ tmp114, SelectedSpell -@ SpellSystem.c:320: DidSelectSpell = 0; - ldr r2, .L227+8 @ tmp119, +@ SpellSystem.c:329: DidSelectSpell = 0; + ldr r2, .L226+8 @ tmp119, strb r3, [r2] @ tmp114, DidSelectSpell -@ SpellSystem.c:321: } +@ SpellSystem.c:330: } bx lr -.L228: - .align 2 .L227: + .align 2 +.L226: .word UsingSpellMenu .word SelectedSpell .word DidSelectSpell @@ -1824,7 +1756,6 @@ GaidenZeroOutSpellVariables: .syntax unified .code 16 .thumb_func - .fpu softvfp .type GetUnitRangeMaskForSpells, %function GetUnitRangeMaskForSpells: @ Function supports interworking. @@ -1832,7 +1763,7 @@ GetUnitRangeMaskForSpells: @ frame_needed = 0, uses_anonymous_args = 0 push {r0, r1, r2, r4, r5, r6, r7, lr} @ @ RangeDisplay.c:42: u8* spells = SpellsGetter(unit,(UsingSpellMenu ? UsingSpellMenu : -1)); // If UsingSpellMenu is nonzero, only get Gaiden spells of that type. - ldr r3, .L245 @ tmp130, + ldr r3, .L243 @ tmp130, @ RangeDisplay.c:40: { str r1, [sp, #4] @ tmp139, %sfp @ RangeDisplay.c:42: u8* spells = SpellsGetter(unit,(UsingSpellMenu ? UsingSpellMenu : -1)); // If UsingSpellMenu is nonzero, only get Gaiden spells of that type. @@ -1841,9 +1772,9 @@ GetUnitRangeMaskForSpells: movs r7, r0 @ unit, tmp138 @ RangeDisplay.c:42: u8* spells = SpellsGetter(unit,(UsingSpellMenu ? UsingSpellMenu : -1)); // If UsingSpellMenu is nonzero, only get Gaiden spells of that type. cmp r1, #0 @ UsingSpellMenu.67_1, - bne .L230 @, - subs r1, r1, #1 @ iftmp.66_16, -.L230: + bne .L229 @, + subs r1, r1, #1 @ iftmp.66_17, +.L229: @ RangeDisplay.c:41: long long current = 0; movs r5, #0 @ , @ RangeDisplay.c:42: u8* spells = SpellsGetter(unit,(UsingSpellMenu ? UsingSpellMenu : -1)); // If UsingSpellMenu is nonzero, only get Gaiden spells of that type. @@ -1853,13 +1784,13 @@ GetUnitRangeMaskForSpells: movs r4, r5 @ , @ RangeDisplay.c:42: u8* spells = SpellsGetter(unit,(UsingSpellMenu ? UsingSpellMenu : -1)); // If UsingSpellMenu is nonzero, only get Gaiden spells of that type. str r0, [sp] @ tmp140, %sfp -.L231: +.L230: @ RangeDisplay.c:43: for ( int i = 0 ; spells[i] ; i++ ) - ldr r3, [sp] @ ivtmp.338, %sfp - ldrb r6, [r3] @ _12, MEM[base: _36, offset: 0B] + ldr r3, [sp] @ ivtmp.343, %sfp + ldrb r6, [r3] @ _13, MEM[(u8 *)_37] @ RangeDisplay.c:43: for ( int i = 0 ; spells[i] ; i++ ) - cmp r6, #0 @ _12, - bne .L234 @, + cmp r6, #0 @ _13, + bne .L235 @, @ RangeDisplay.c:56: } movs r0, r5 @, movs r1, r4 @, @@ -1868,11 +1799,11 @@ GetUnitRangeMaskForSpells: pop {r4, r5, r6, r7} pop {r2} bx r2 -.L234: +.L235: @ RangeDisplay.c:45: int spell = spells[i]|0xFF00; - movs r3, #255 @ tmp163, - lsls r3, r3, #8 @ tmp163, tmp163, - orrs r6, r3 @ spell, tmp163 + movs r3, #255 @ tmp164, + lsls r3, r3, #8 @ tmp164, tmp164, + orrs r6, r3 @ spell, tmp164 @ RangeDisplay.c:46: if ( usability == NULL ) ldr r3, [sp, #4] @ usability, %sfp @ RangeDisplay.c:48: if ( CanCastSpell(unit,spell) ) { current = IncorporateNewRange(current,gGet_Item_Range(unit,spell)); } @@ -1880,39 +1811,39 @@ GetUnitRangeMaskForSpells: movs r0, r7 @, unit @ RangeDisplay.c:46: if ( usability == NULL ) cmp r3, #0 @ usability, - bne .L232 @, + bne .L231 @, @ RangeDisplay.c:48: if ( CanCastSpell(unit,spell) ) { current = IncorporateNewRange(current,gGet_Item_Range(unit,spell)); } bl CanCastSpell @ -.L244: +.L242: @ RangeDisplay.c:52: if ( usability(unit,spell) ) { current = IncorporateNewRange(current,gGet_Item_Range(unit,spell)); } cmp r0, #0 @ tmp144, beq .L233 @, @ RangeDisplay.c:52: if ( usability(unit,spell) ) { current = IncorporateNewRange(current,gGet_Item_Range(unit,spell)); } - ldr r3, .L245+4 @ tmp134, + ldr r3, .L243+4 @ tmp134, movs r1, r6 @, spell ldr r3, [r3] @ gGet_Item_Range, gGet_Item_Range movs r0, r7 @, unit bl .L14 @ - movs r2, r0 @ _9, tmp159 - movs r3, r1 @ _9, tmp160 + movs r2, r0 @ _10, tmp159 + movs r3, r1 @ _10, tmp160 movs r0, r5 @, movs r1, r4 @, bl IncorporateNewRange @ movs r5, r0 @ , tmp161 movs r4, r1 @ , tmp162 .L233: - ldr r3, [sp] @ ivtmp.338, %sfp - adds r3, r3, #1 @ ivtmp.338, - str r3, [sp] @ ivtmp.338, %sfp - b .L231 @ -.L232: + ldr r3, [sp] @ ivtmp.343, %sfp + adds r3, r3, #1 @ ivtmp.343, + str r3, [sp] @ ivtmp.343, %sfp + b .L230 @ +.L231: @ RangeDisplay.c:52: if ( usability(unit,spell) ) { current = IncorporateNewRange(current,gGet_Item_Range(unit,spell)); } ldr r3, [sp, #4] @ usability, %sfp bl .L14 @ - b .L244 @ -.L246: + b .L242 @ +.L244: .align 2 -.L245: +.L243: .word UsingSpellMenu .word gGet_Item_Range .size GetUnitRangeMaskForSpells, .-GetUnitRangeMaskForSpells @@ -1921,7 +1852,6 @@ GetUnitRangeMaskForSpells: .syntax unified .code 16 .thumb_func - .fpu softvfp .type Return_Range_Bitfield, %function Return_Range_Bitfield: @ Function supports interworking. @@ -1938,33 +1868,33 @@ Return_Range_Bitfield: str r2, [sp, #8] @ tmp149, %sfp @ RangeDisplay.c:11: if ( slot == -1 || slot == -2 ) adds r3, r3, #2 @ tmp175, slot, - bcc .L248 @, + bcc .L246 @, @ RangeDisplay.c:10: long long current = 0; movs r5, #0 @ , - movs r3, r0 @ _19, unit - movs r7, r0 @ ivtmp.347, unit + movs r3, r0 @ _48, unit + movs r7, r0 @ ivtmp.353, unit movs r4, r5 @ , - adds r3, r3, #40 @ _19, - str r3, [sp, #12] @ _19, %sfp - adds r7, r7, #30 @ ivtmp.347, -.L249: + adds r3, r3, #40 @ _48, + str r3, [sp, #12] @ _48, %sfp + adds r7, r7, #30 @ ivtmp.353, +.L247: @ RangeDisplay.c:14: for ( int i = 0 ; i < 5 && unit->items[i] ; i++ ) - ldrh r1, [r7] @ _10, MEM[base: _38, offset: 0B] + ldrh r1, [r7] @ _10, MEM[(short unsigned int *)_45] @ RangeDisplay.c:14: for ( int i = 0 ; i < 5 && unit->items[i] ; i++ ) cmp r1, #0 @ _10, - beq .L251 @, + beq .L249 @, @ RangeDisplay.c:16: if ( usability(unit,unit->items[i]) ) movs r0, r6 @, unit ldr r3, [sp, #8] @ usability, %sfp bl .L14 @ @ RangeDisplay.c:16: if ( usability(unit,unit->items[i]) ) cmp r0, #0 @ tmp150, - beq .L250 @, + beq .L248 @, @ RangeDisplay.c:18: current = IncorporateNewRange(current,gGet_Item_Range(unit,unit->items[i])); - ldr r3, .L259 @ tmp137, + ldr r3, .L258 @ tmp137, movs r0, r6 @, unit ldr r3, [r3] @ gGet_Item_Range, gGet_Item_Range - ldrh r1, [r7] @ MEM[base: _38, offset: 0B], MEM[base: _38, offset: 0B] + ldrh r1, [r7] @ MEM[(short unsigned int *)_45], MEM[(short unsigned int *)_45] bl .L14 @ movs r2, r0 @ _9, tmp163 movs r3, r1 @ _9, tmp164 @@ -1973,17 +1903,17 @@ Return_Range_Bitfield: bl IncorporateNewRange @ movs r5, r0 @ , tmp165 movs r4, r1 @ , tmp166 -.L250: +.L248: @ RangeDisplay.c:14: for ( int i = 0 ; i < 5 && unit->items[i] ; i++ ) - ldr r3, [sp, #12] @ _19, %sfp - adds r7, r7, #2 @ ivtmp.347, - cmp r7, r3 @ ivtmp.347, _19 - bne .L249 @, -.L251: + ldr r3, [sp, #12] @ _48, %sfp + adds r7, r7, #2 @ ivtmp.353, + cmp r7, r3 @ ivtmp.353, _48 + bne .L247 @, +.L249: @ RangeDisplay.c:21: return ( slot == -1 ? IncorporateNewRange(current,GetUnitRangeMaskForSpells(unit,usability)) : current ); ldr r3, [sp, #4] @ slot, %sfp adds r3, r3, #1 @ tmp176, slot, - bne .L247 @, + bne .L245 @, @ RangeDisplay.c:21: return ( slot == -1 ? IncorporateNewRange(current,GetUnitRangeMaskForSpells(unit,usability)) : current ); movs r0, r6 @, unit ldr r1, [sp, #8] @, %sfp @@ -1993,11 +1923,11 @@ Return_Range_Bitfield: movs r0, r5 @, movs r1, r4 @, bl IncorporateNewRange @ -.L258: +.L257: @ RangeDisplay.c:33: return GetUnitRangeMaskForSpells(unit,usability); movs r5, r0 @ , tmp173 movs r4, r1 @ , tmp174 -.L247: +.L245: @ RangeDisplay.c:36: } movs r0, r5 @, movs r1, r4 @, @@ -2006,32 +1936,29 @@ Return_Range_Bitfield: pop {r4, r5, r6, r7} pop {r2} bx r2 -.L248: +.L246: @ RangeDisplay.c:26: if ( slot != 9 ) ldr r3, [sp, #4] @ slot, %sfp cmp r3, #9 @ slot, - beq .L254 @, + beq .L252 @, @ RangeDisplay.c:28: return gGet_Item_Range(unit,unit->items[slot]); - movs r1, r3 @ slot, slot - adds r1, r1, #12 @ slot, -@ RangeDisplay.c:28: return gGet_Item_Range(unit,unit->items[slot]); - ldr r3, .L259 @ tmp144, -@ RangeDisplay.c:28: return gGet_Item_Range(unit,unit->items[slot]); - lsls r1, r1, #1 @ tmp140, tmp139, - adds r1, r0, r1 @ tmp141, unit, tmp140 + adds r3, r3, #12 @ slot, + lsls r3, r3, #1 @ tmp140, tmp139, + adds r3, r0, r3 @ tmp141, unit, tmp140 @ RangeDisplay.c:28: return gGet_Item_Range(unit,unit->items[slot]); + ldrh r1, [r3, #6] @ tmp143, *unit_26(D) + ldr r3, .L258 @ tmp144, ldr r3, [r3] @ gGet_Item_Range, gGet_Item_Range - ldrh r1, [r1, #6] @ tmp143, *unit_26(D) bl .L14 @ - b .L258 @ -.L254: + b .L257 @ +.L252: @ RangeDisplay.c:33: return GetUnitRangeMaskForSpells(unit,usability); ldr r1, [sp, #8] @, %sfp bl GetUnitRangeMaskForSpells @ - b .L258 @ -.L260: - .align 2 + b .L257 @ .L259: + .align 2 +.L258: .word gGet_Item_Range .size Return_Range_Bitfield, .-Return_Range_Bitfield .align 1 @@ -2039,7 +1966,6 @@ Return_Range_Bitfield: .syntax unified .code 16 .thumb_func - .fpu softvfp .type All_Spells_One_Square, %function All_Spells_One_Square: @ Function supports interworking. @@ -2072,7 +1998,7 @@ mov r12, r7 movs r0, #16 @ tmp122, ldrsb r1, [r4, r1] @ tmp121, ldrsb r0, [r4, r0] @ tmp122, - ldr r4, .L262 @ tmp123, + ldr r4, .L261 @ tmp123, ldr r4, [r4] @ gWrite_Range, gWrite_Range bl .L16 @ @ RangeDisplay.c:86: asm("pop { r7 }"); @@ -2087,9 +2013,9 @@ mov r12, r7 pop {r4} pop {r0} bx r0 -.L263: - .align 2 .L262: + .align 2 +.L261: .word gWrite_Range .size All_Spells_One_Square, .-All_Spells_One_Square .align 1 @@ -2097,7 +2023,6 @@ mov r12, r7 .syntax unified .code 16 .thumb_func - .fpu softvfp .type GaidenBlackMagicUMHover, %function GaidenBlackMagicUMHover: @ Function supports interworking. @@ -2106,55 +2031,55 @@ GaidenBlackMagicUMHover: push {r4, r5, r6, lr} @ @ UnitMenu.c:73: UsingSpellMenu = BLACK_MAGIC; movs r5, #1 @ tmp122, - ldr r3, .L268 @ tmp121, + ldr r3, .L267 @ tmp121, strb r5, [r3] @ tmp122, UsingSpellMenu @ UnitMenu.c:74: BmMapFill(gMapMovement,-1); - ldr r3, .L268+4 @ tmp124, - ldr r4, .L268+8 @ tmp125, + ldr r3, .L267+4 @ tmp124, + ldr r4, .L267+8 @ tmp125, ldr r0, [r3] @, gMapMovement movs r1, #255 @, bl .L16 @ @ UnitMenu.c:75: BmMapFill(gMapRange,0); - ldr r3, .L268+12 @ tmp126, + ldr r3, .L267+12 @ tmp126, movs r1, #0 @, ldr r0, [r3] @, gMapRange bl .L16 @ @ UnitMenu.c:76: if ( CanUseAttackSpellsNow(gActiveUnit,BLACK_MAGIC) ) // If we can use an attack spell now, display the red range. - ldr r4, .L268+16 @ tmp128, + ldr r4, .L267+16 @ tmp128, movs r1, r5 @, tmp122 ldr r0, [r4] @, gActiveUnit bl CanUseAttackSpellsNow @ - ldr r5, .L268+20 @ tmp136, + ldr r5, .L267+20 @ tmp136, @ UnitMenu.c:76: if ( CanUseAttackSpellsNow(gActiveUnit,BLACK_MAGIC) ) // If we can use an attack spell now, display the red range. cmp r0, #0 @ tmp137, - beq .L265 @, + beq .L264 @, @ UnitMenu.c:78: All_Spells_One_Square(gActiveUnit,&RangeUsabilityCheckNotStaff); ldr r0, [r4] @, gActiveUnit - ldr r1, .L268+24 @, + ldr r1, .L267+24 @ tmp129, bl All_Spells_One_Square @ @ UnitMenu.c:79: DisplayMoveRangeGraphics(3); movs r0, #3 @, -.L267: +.L266: @ UnitMenu.c:90: } @ sp needed @ @ UnitMenu.c:84: DisplayMoveRangeGraphics(5); - bl .L270 @ + bl .L269 @ @ UnitMenu.c:90: } movs r0, #0 @, pop {r4, r5, r6} pop {r1} bx r1 -.L265: +.L264: @ UnitMenu.c:83: All_Spells_One_Square(gActiveUnit,&RangeUsabilityCheckStaff); ldr r0, [r4] @, gActiveUnit - ldr r1, .L268+28 @, + ldr r1, .L267+28 @ tmp132, bl All_Spells_One_Square @ @ UnitMenu.c:84: DisplayMoveRangeGraphics(5); movs r0, #5 @, - b .L267 @ -.L269: - .align 2 + b .L266 @ .L268: + .align 2 +.L267: .word UsingSpellMenu .word gMapMovement .word BmMapFill @@ -2169,7 +2094,6 @@ GaidenBlackMagicUMHover: .syntax unified .code 16 .thumb_func - .fpu softvfp .type GaidenWhiteMagicUMHover, %function GaidenWhiteMagicUMHover: @ Function supports interworking. @@ -2178,55 +2102,55 @@ GaidenWhiteMagicUMHover: push {r4, r5, r6, lr} @ @ UnitMenu.c:94: UsingSpellMenu = WHITE_MAGIC; movs r5, #2 @ tmp122, - ldr r3, .L275 @ tmp121, + ldr r3, .L274 @ tmp121, strb r5, [r3] @ tmp122, UsingSpellMenu @ UnitMenu.c:95: BmMapFill(gMapMovement,-1); - ldr r3, .L275+4 @ tmp124, - ldr r4, .L275+8 @ tmp125, + ldr r3, .L274+4 @ tmp124, + ldr r4, .L274+8 @ tmp125, ldr r0, [r3] @, gMapMovement movs r1, #255 @, bl .L16 @ @ UnitMenu.c:96: BmMapFill(gMapRange,0); - ldr r3, .L275+12 @ tmp126, + ldr r3, .L274+12 @ tmp126, movs r1, #0 @, ldr r0, [r3] @, gMapRange bl .L16 @ @ UnitMenu.c:97: if ( CanUseAttackSpellsNow(gActiveUnit,WHITE_MAGIC) ) // If we can use an attack spell now, display the red range. - ldr r4, .L275+16 @ tmp128, + ldr r4, .L274+16 @ tmp128, movs r1, r5 @, tmp122 ldr r0, [r4] @, gActiveUnit bl CanUseAttackSpellsNow @ - ldr r5, .L275+20 @ tmp136, + ldr r5, .L274+20 @ tmp136, @ UnitMenu.c:97: if ( CanUseAttackSpellsNow(gActiveUnit,WHITE_MAGIC) ) // If we can use an attack spell now, display the red range. cmp r0, #0 @ tmp137, - beq .L272 @, + beq .L271 @, @ UnitMenu.c:99: All_Spells_One_Square(gActiveUnit,&RangeUsabilityCheckNotStaff); ldr r0, [r4] @, gActiveUnit - ldr r1, .L275+24 @, + ldr r1, .L274+24 @ tmp129, bl All_Spells_One_Square @ @ UnitMenu.c:100: DisplayMoveRangeGraphics(3); movs r0, #3 @, -.L274: +.L273: @ UnitMenu.c:108: } @ sp needed @ @ UnitMenu.c:105: DisplayMoveRangeGraphics(5); - bl .L270 @ + bl .L269 @ @ UnitMenu.c:108: } movs r0, #0 @, pop {r4, r5, r6} pop {r1} bx r1 -.L272: +.L271: @ UnitMenu.c:104: All_Spells_One_Square(gActiveUnit,&RangeUsabilityCheckStaff); ldr r0, [r4] @, gActiveUnit - ldr r1, .L275+28 @, + ldr r1, .L274+28 @ tmp132, bl All_Spells_One_Square @ @ UnitMenu.c:105: DisplayMoveRangeGraphics(5); movs r0, #5 @, - b .L274 @ -.L276: - .align 2 + b .L273 @ .L275: + .align 2 +.L274: .word UsingSpellMenu .word gMapMovement .word BmMapFill @@ -2241,7 +2165,6 @@ GaidenWhiteMagicUMHover: .syntax unified .code 16 .thumb_func - .fpu softvfp .type SpellUsability, %function SpellUsability: @ Function supports interworking. @@ -2249,8 +2172,8 @@ SpellUsability: @ frame_needed = 0, uses_anonymous_args = 0 push {r3, r4, r5, r6, r7, lr} @ @ SpellMenu.c:5: int spell = SpellsGetter(gActiveUnit,UsingSpellMenu)[GetNthUsableSpell(gActiveUnit,index,UsingSpellMenu)]; - ldr r7, .L285 @ tmp133, - ldr r4, .L285+4 @ tmp135, + ldr r7, .L284 @ tmp133, + ldr r4, .L284+4 @ tmp135, @ SpellMenu.c:4: { movs r6, r1 @ index, tmp144 @ SpellMenu.c:5: int spell = SpellsGetter(gActiveUnit,UsingSpellMenu)[GetNthUsableSpell(gActiveUnit,index,UsingSpellMenu)]; @@ -2269,24 +2192,24 @@ SpellUsability: ldrb r5, [r5, r0] @ spell, *_10 @ SpellMenu.c:6: if ( !spell ) { return 3; } cmp r5, #0 @ spell, - bne .L278 @, -.L280: + bne .L277 @, +.L279: @ SpellMenu.c:6: if ( !spell ) { return 3; } movs r0, #3 @ , -.L277: +.L276: @ SpellMenu.c:11: } @ sp needed @ pop {r3, r4, r5, r6, r7} pop {r1} bx r1 -.L278: +.L277: @ SpellMenu.c:8: if ( !CanCastSpellNow(gActiveUnit,spell) ) { return 3; } movs r1, r5 @, spell ldr r0, [r4] @, gActiveUnit bl CanCastSpellNow @ @ SpellMenu.c:8: if ( !CanCastSpellNow(gActiveUnit,spell) ) { return 3; } cmp r0, #0 @ tmp147, - beq .L280 @, + beq .L279 @, @ SpellMenu.c:10: return ( HasSufficientHP(gActiveUnit,spell) ? 1 : 2 ); movs r1, r5 @, spell ldr r0, [r4] @, gActiveUnit @@ -2295,10 +2218,10 @@ SpellUsability: rsbs r3, r0, #0 @ tmp143, tmp148 adcs r0, r0, r3 @ tmp142, tmp148, tmp143 adds r0, r0, #1 @ , - b .L277 @ -.L286: - .align 2 + b .L276 @ .L285: + .align 2 +.L284: .word UsingSpellMenu .word gActiveUnit .size SpellUsability, .-SpellUsability @@ -2307,7 +2230,6 @@ SpellUsability: .syntax unified .code 16 .thumb_func - .fpu softvfp .type SpellDrawingRoutine, %function SpellDrawingRoutine: @ Function supports interworking. @@ -2315,12 +2237,12 @@ SpellDrawingRoutine: @ frame_needed = 0, uses_anonymous_args = 0 push {r3, r4, r5, r6, r7, lr} @ @ SpellMenu.c:14: { - movs r4, r1 @ menuCommand, tmp167 + movs r4, r1 @ menuCommand, tmp165 @ SpellMenu.c:22: } @ sp needed @ @ SpellMenu.c:16: int spell = SpellsGetter(gActiveUnit,UsingSpellMenu)[GetNthUsableSpell(gActiveUnit,menuCommand->commandDefinitionIndex,UsingSpellMenu)]; - ldr r6, .L288 @ tmp145, - ldr r7, .L288+4 @ tmp143, + ldr r6, .L287 @ tmp145, + ldr r7, .L287+4 @ tmp143, ldr r0, [r6] @, gActiveUnit ldrb r1, [r7] @ UsingSpellMenu, UsingSpellMenu bl SpellsGetter @ @@ -2331,7 +2253,7 @@ SpellDrawingRoutine: ldrb r2, [r7] @ UsingSpellMenu, UsingSpellMenu ldrb r1, [r3] @ tmp151, @ SpellMenu.c:16: int spell = SpellsGetter(gActiveUnit,UsingSpellMenu)[GetNthUsableSpell(gActiveUnit,menuCommand->commandDefinitionIndex,UsingSpellMenu)]; - movs r5, r0 @ _4, tmp168 + movs r5, r0 @ _4, tmp166 @ SpellMenu.c:16: int spell = SpellsGetter(gActiveUnit,UsingSpellMenu)[GetNthUsableSpell(gActiveUnit,menuCommand->commandDefinitionIndex,UsingSpellMenu)]; ldr r0, [r6] @, gActiveUnit bl GetNthUsableSpell @ @@ -2341,7 +2263,7 @@ SpellDrawingRoutine: ldr r0, [r6] @, gActiveUnit movs r1, r5 @, _13 bl HasSufficientHP @ - movs r2, r0 @ canUse, tmp170 + movs r2, r0 @ canUse, tmp168 @ SpellMenu.c:19: DrawItemMenuCommand(&menuCommand->text,spell,canUse,&gBg0MapBuffer[menuCommand->yDrawTile * 32 + menuCommand->xDrawTile]); movs r0, r4 @ menuCommand, menuCommand @ SpellMenu.c:19: DrawItemMenuCommand(&menuCommand->text,spell,canUse,&gBg0MapBuffer[menuCommand->yDrawTile * 32 + menuCommand->xDrawTile]); @@ -2353,27 +2275,27 @@ SpellDrawingRoutine: @ SpellMenu.c:19: DrawItemMenuCommand(&menuCommand->text,spell,canUse,&gBg0MapBuffer[menuCommand->yDrawTile * 32 + menuCommand->xDrawTile]); adds r3, r3, r1 @ tmp157, tmp155, tmp156 @ SpellMenu.c:19: DrawItemMenuCommand(&menuCommand->text,spell,canUse,&gBg0MapBuffer[menuCommand->yDrawTile * 32 + menuCommand->xDrawTile]); - ldr r1, .L288+8 @ tmp160, + ldr r1, .L287+8 @ tmp160, lsls r3, r3, #1 @ tmp158, tmp157, adds r3, r3, r1 @ tmp159, tmp158, tmp160 - ldr r4, .L288+12 @ tmp164, - movs r1, r5 @ tmp161, _13 + ldr r4, .L287+12 @ tmp162, + movs r1, r5 @, _13 @ SpellMenu.c:19: DrawItemMenuCommand(&menuCommand->text,spell,canUse,&gBg0MapBuffer[menuCommand->yDrawTile * 32 + menuCommand->xDrawTile]); adds r0, r0, #52 @ menuCommand, @ SpellMenu.c:19: DrawItemMenuCommand(&menuCommand->text,spell,canUse,&gBg0MapBuffer[menuCommand->yDrawTile * 32 + menuCommand->xDrawTile]); bl .L16 @ @ SpellMenu.c:20: EnableBgSyncByMask(1); movs r0, #1 @, - ldr r3, .L288+16 @ tmp165, + ldr r3, .L287+16 @ tmp163, bl .L14 @ @ SpellMenu.c:22: } movs r0, #0 @, pop {r3, r4, r5, r6, r7} pop {r1} bx r1 -.L289: - .align 2 .L288: + .align 2 +.L287: .word gActiveUnit .word UsingSpellMenu .word gBg0MapBuffer @@ -2385,7 +2307,6 @@ SpellDrawingRoutine: .syntax unified .code 16 .thumb_func - .fpu softvfp .type MagicMenuBPress, %function MagicMenuBPress: @ Function supports interworking. @@ -2397,48 +2318,48 @@ MagicMenuBPress: @ SpellMenu.c:35: } @ sp needed @ @ SpellMenu.c:26: FillBgMap(gBg2MapBuffer,0); - ldr r0, .L291 @, - ldr r3, .L291+4 @ tmp120, + ldr r0, .L290 @ tmp119, + ldr r3, .L290+4 @ tmp120, bl .L14 @ @ SpellMenu.c:27: EnableBgSyncByMask(4); movs r0, #4 @, - ldr r3, .L291+8 @ tmp121, + ldr r3, .L290+8 @ tmp121, bl .L14 @ @ SpellMenu.c:28: Text_ResetTileAllocation(); - ldr r3, .L291+12 @ tmp122, + ldr r3, .L290+12 @ tmp122, bl .L14 @ @ SpellMenu.c:30: StartMenu_AndDoSomethingCommands(&gMenu_UnitMenu,gGameState._unk1C.x - gGameState.cameraRealPos.x,1,16); - ldr r3, .L291+16 @ tmp123, + ldr r3, .L290+16 @ tmp123, ldrh r1, [r3, #28] @ tmp124, @ SpellMenu.c:30: StartMenu_AndDoSomethingCommands(&gMenu_UnitMenu,gGameState._unk1C.x - gGameState.cameraRealPos.x,1,16); ldrh r3, [r3, #12] @ tmp126, @ SpellMenu.c:30: StartMenu_AndDoSomethingCommands(&gMenu_UnitMenu,gGameState._unk1C.x - gGameState.cameraRealPos.x,1,16); movs r2, #1 @, subs r1, r1, r3 @ tmp127, tmp124, tmp126 - ldr r4, .L291+20 @ tmp129, + ldr r4, .L290+20 @ tmp129, movs r3, #16 @, - ldr r0, .L291+24 @, + ldr r0, .L290+24 @ tmp128, bl .L16 @ @ SpellMenu.c:31: HideMoveRangeGraphics(); - ldr r3, .L291+28 @ tmp130, + ldr r3, .L290+28 @ tmp130, bl .L14 @ @ SpellMenu.c:32: SelectedSpell = 0; - movs r3, #0 @ tmp132, - ldr r2, .L291+32 @ tmp131, - strb r3, [r2] @ tmp132, SelectedSpell + movs r2, #0 @ tmp132, + ldr r3, .L290+32 @ tmp131, + strb r2, [r3] @ tmp132, SelectedSpell @ SpellMenu.c:33: UsingSpellMenu = 0; - ldr r2, .L291+36 @ tmp134, + ldr r3, .L290+36 @ tmp134, @ SpellMenu.c:35: } movs r0, #59 @, @ SpellMenu.c:33: UsingSpellMenu = 0; - strb r3, [r2] @ tmp132, UsingSpellMenu + strb r2, [r3] @ tmp132, UsingSpellMenu @ SpellMenu.c:35: } pop {r4} pop {r1} bx r1 -.L292: - .align 2 .L291: + .align 2 +.L290: .word gBg2MapBuffer .word FillBgMap .word EnableBgSyncByMask @@ -2455,7 +2376,6 @@ MagicMenuBPress: .syntax unified .code 16 .thumb_func - .fpu softvfp .type SpellEffectRoutine, %function SpellEffectRoutine: @ Function supports interworking. @@ -2467,67 +2387,67 @@ SpellEffectRoutine: @ SpellMenu.c:39: if ( commandProc->availability == 2) ldrb r3, [r1] @ tmp132, cmp r3, #2 @ tmp132, - bne .L294 @, + bne .L293 @, @ SpellMenu.c:42: MenuCallHelpBox(proc,gGaidenMagicSpellMenuErrorText); - ldr r3, .L298 @ tmp133, + ldr r3, .L297 @ tmp133, ldrh r1, [r3] @ gGaidenMagicSpellMenuErrorText, gGaidenMagicSpellMenuErrorText - ldr r3, .L298+4 @ tmp135, + ldr r3, .L297+4 @ tmp135, bl .L14 @ @ SpellMenu.c:43: return 0x08; movs r0, #8 @ , -.L293: +.L292: @ SpellMenu.c:63: } @ sp needed @ pop {r4} pop {r1} bx r1 -.L294: +.L293: @ SpellMenu.c:48: gActionData.itemSlotIndex = 0; movs r2, #0 @ tmp137, - ldr r3, .L298+8 @ tmp136, + ldr r3, .L297+8 @ tmp136, strb r2, [r3, #18] @ tmp137, gActionData.itemSlotIndex @ SpellMenu.c:49: DidSelectSpell = 1; - ldr r3, .L298+12 @ tmp139, + ldr r3, .L297+12 @ tmp139, adds r2, r2, #1 @ tmp140, strb r2, [r3] @ tmp140, DidSelectSpell @ SpellMenu.c:50: ClearBG0BG1(); - ldr r3, .L298+16 @ tmp142, + ldr r3, .L297+16 @ tmp142, bl .L14 @ @ SpellMenu.c:51: int type = GetItemType(SelectedSpell); - ldr r4, .L298+20 @ tmp143, - ldr r3, .L298+24 @ tmp145, + ldr r4, .L297+20 @ tmp143, + ldr r3, .L297+24 @ tmp145, ldrb r0, [r4] @ SelectedSpell, SelectedSpell bl .L14 @ movs r1, #255 @ tmp162, ldrb r2, [r4] @ SelectedSpell, SelectedSpell lsls r1, r1, #8 @ tmp162, tmp162, - ldr r3, .L298+28 @ tmp163, + ldr r3, .L297+28 @ tmp163, @ SpellMenu.c:54: MakeTargetListForWeapon(gActiveUnit,SelectedSpell|0xFF00); orrs r1, r2 @ tmp148, SelectedSpell @ SpellMenu.c:52: if ( type != ITYPE_STAFF ) cmp r0, #4 @ tmp166, - beq .L296 @, + beq .L295 @, @ SpellMenu.c:54: MakeTargetListForWeapon(gActiveUnit,SelectedSpell|0xFF00); ldr r0, [r3] @, gActiveUnit - ldr r3, .L298+32 @ tmp151, + ldr r3, .L297+32 @ tmp151, bl .L14 @ @ SpellMenu.c:55: StartTargetSelection(&SpellTargetSelection); - ldr r0, .L298+36 @, - ldr r3, .L298+40 @ tmp153, + ldr r0, .L297+36 @ tmp152, + ldr r3, .L297+40 @ tmp153, bl .L14 @ -.L297: +.L296: @ SpellMenu.c:61: return 0x27; movs r0, #39 @ , - b .L293 @ -.L296: + b .L292 @ +.L295: @ SpellMenu.c:59: ItemEffect_Call(gActiveUnit,SelectedSpell|0xFF00); ldr r0, [r3] @, gActiveUnit - ldr r3, .L298+44 @ tmp159, + ldr r3, .L297+44 @ tmp159, bl .L14 @ - b .L297 @ -.L299: - .align 2 + b .L296 @ .L298: + .align 2 +.L297: .word gGaidenMagicSpellMenuErrorText .word MenuCallHelpBox .word gActionData @@ -2546,47 +2466,45 @@ SpellEffectRoutine: .syntax unified .code 16 .thumb_func - .fpu softvfp .type SpellOnHover, %function SpellOnHover: @ Function supports interworking. - @ args = 0, pretend = 0, frame = 24 + @ args = 0, pretend = 0, frame = 32 @ frame_needed = 0, uses_anonymous_args = 0 push {r4, r5, r6, r7, lr} @ @ SpellMenu.c:67: int spell = SpellsGetter(gActiveUnit,UsingSpellMenu)[GetNthUsableSpell(gActiveUnit,proc->commandIndex,UsingSpellMenu)]; - ldr r3, .L315 @ tmp389, - ldr r6, .L315+4 @ tmp206, + ldr r6, .L314 @ tmp206, + ldr r7, .L314+4 @ tmp208, @ SpellMenu.c:66: { - sub sp, sp, #36 @,, -@ SpellMenu.c:67: int spell = SpellsGetter(gActiveUnit,UsingSpellMenu)[GetNthUsableSpell(gActiveUnit,proc->commandIndex,UsingSpellMenu)]; - ldrb r1, [r6] @ UsingSpellMenu, UsingSpellMenu + sub sp, sp, #44 @,, @ SpellMenu.c:66: { movs r4, r0 @ proc, tmp367 @ SpellMenu.c:67: int spell = SpellsGetter(gActiveUnit,UsingSpellMenu)[GetNthUsableSpell(gActiveUnit,proc->commandIndex,UsingSpellMenu)]; - ldr r0, [r3] @, gActiveUnit + ldrb r1, [r6] @ UsingSpellMenu, UsingSpellMenu + ldr r0, [r7] @, gActiveUnit bl SpellsGetter @ -@ SpellMenu.c:67: int spell = SpellsGetter(gActiveUnit,UsingSpellMenu)[GetNthUsableSpell(gActiveUnit,proc->commandIndex,UsingSpellMenu)]; - ldr r3, .L315 @ tmp390, @ SpellMenu.c:67: int spell = SpellsGetter(gActiveUnit,UsingSpellMenu)[GetNthUsableSpell(gActiveUnit,proc->commandIndex,UsingSpellMenu)]; adds r4, r4, #97 @ tmp213, @ SpellMenu.c:67: int spell = SpellsGetter(gActiveUnit,UsingSpellMenu)[GetNthUsableSpell(gActiveUnit,proc->commandIndex,UsingSpellMenu)]; - ldrb r2, [r6] @ UsingSpellMenu, UsingSpellMenu ldrb r1, [r4] @ tmp214, @ SpellMenu.c:67: int spell = SpellsGetter(gActiveUnit,UsingSpellMenu)[GetNthUsableSpell(gActiveUnit,proc->commandIndex,UsingSpellMenu)]; movs r5, r0 @ _4, tmp368 @ SpellMenu.c:67: int spell = SpellsGetter(gActiveUnit,UsingSpellMenu)[GetNthUsableSpell(gActiveUnit,proc->commandIndex,UsingSpellMenu)]; - ldr r0, [r3] @, gActiveUnit + ldrb r2, [r6] @ UsingSpellMenu, UsingSpellMenu + ldr r0, [r7] @, gActiveUnit bl GetNthUsableSpell @ -@ SpellMenu.c:68: SelectedSpell = spell; - ldr r3, .L315+8 @ tmp216, @ SpellMenu.c:67: int spell = SpellsGetter(gActiveUnit,UsingSpellMenu)[GetNthUsableSpell(gActiveUnit,proc->commandIndex,UsingSpellMenu)]; - ldrb r7, [r5, r0] @ spell, *_12 + ldrb r3, [r5, r0] @ spell, *_12 + str r3, [sp, #12] @ spell, %sfp +@ SpellMenu.c:68: SelectedSpell = spell; + ldr r2, [sp, #12] @ spell, %sfp + ldr r3, .L314+8 @ tmp216, @ SpellMenu.c:71: MenuItemPanelProc* menuItemPanel = (MenuItemPanelProc*)ProcFind(&gProc_MenuItemPanel); - ldr r0, .L315+12 @, + ldr r0, .L314+12 @ tmp218, @ SpellMenu.c:68: SelectedSpell = spell; - strb r7, [r3] @ spell, SelectedSpell + strb r2, [r3] @ spell, SelectedSpell @ SpellMenu.c:71: MenuItemPanelProc* menuItemPanel = (MenuItemPanelProc*)ProcFind(&gProc_MenuItemPanel); - ldr r3, .L315+16 @ tmp219, + ldr r3, .L314+16 @ tmp219, bl .L14 @ @ SpellMenu.c:72: int x = menuItemPanel->x; movs r3, r0 @ tmp222, tmp370 @@ -2595,186 +2513,173 @@ SpellOnHover: @ SpellMenu.c:72: int x = menuItemPanel->x; adds r3, r3, #48 @ tmp222, ldrb r3, [r3] @ _14, - str r3, [sp, #24] @ _14, %sfp + str r3, [sp, #32] @ _14, %sfp @ SpellMenu.c:73: int y = menuItemPanel->y; movs r3, r0 @ tmp225, tmp370 -@ SpellMenu.c:75: for ( int i = 0 ; i < 3 ; i++ ) { Text_Clear(&menuItemPanel->textHandles[i]); } - movs r4, r0 @ _140, tmp370 -@ SpellMenu.c:73: int y = menuItemPanel->y; adds r3, r3, #49 @ tmp225, @ SpellMenu.c:73: int y = menuItemPanel->y; ldrb r3, [r3] @ y, + str r3, [sp, #36] @ y, %sfp @ SpellMenu.c:75: for ( int i = 0 ; i < 3 ; i++ ) { Text_Clear(&menuItemPanel->textHandles[i]); } - adds r4, r4, #52 @ _140, + movs r3, r0 @ _140, tmp370 + adds r3, r3, #52 @ _140, @ SpellMenu.c:75: for ( int i = 0 ; i < 3 ; i++ ) { Text_Clear(&menuItemPanel->textHandles[i]); } - ldr r5, .L315+20 @ tmp226, - movs r0, r4 @, _140 -@ SpellMenu.c:73: int y = menuItemPanel->y; - str r3, [sp, #28] @ y, %sfp + ldr r4, .L314+20 @ tmp226, + movs r0, r3 @, _140 @ SpellMenu.c:75: for ( int i = 0 ; i < 3 ; i++ ) { Text_Clear(&menuItemPanel->textHandles[i]); } - str r4, [sp, #16] @ _140, %sfp + str r3, [sp, #20] @ _140, %sfp @ SpellMenu.c:75: for ( int i = 0 ; i < 3 ; i++ ) { Text_Clear(&menuItemPanel->textHandles[i]); } - bl .L270 @ + bl .L16 @ @ SpellMenu.c:75: for ( int i = 0 ; i < 3 ; i++ ) { Text_Clear(&menuItemPanel->textHandles[i]); } ldr r3, [sp, #8] @ _145, %sfp adds r3, r3, #60 @ _145, @ SpellMenu.c:75: for ( int i = 0 ; i < 3 ; i++ ) { Text_Clear(&menuItemPanel->textHandles[i]); } movs r0, r3 @, _145 @ SpellMenu.c:75: for ( int i = 0 ; i < 3 ; i++ ) { Text_Clear(&menuItemPanel->textHandles[i]); } - str r3, [sp, #20] @ _145, %sfp + str r3, [sp, #24] @ _145, %sfp +@ SpellMenu.c:75: for ( int i = 0 ; i < 3 ; i++ ) { Text_Clear(&menuItemPanel->textHandles[i]); } + bl .L16 @ @ SpellMenu.c:75: for ( int i = 0 ; i < 3 ; i++ ) { Text_Clear(&menuItemPanel->textHandles[i]); } - bl .L270 @ + ldr r3, [sp, #8] @ _150, %sfp + adds r3, r3, #68 @ _150, @ SpellMenu.c:75: for ( int i = 0 ; i < 3 ; i++ ) { Text_Clear(&menuItemPanel->textHandles[i]); } - ldr r6, [sp, #8] @ _150, %sfp - adds r6, r6, #68 @ _150, + movs r0, r3 @, _150 @ SpellMenu.c:75: for ( int i = 0 ; i < 3 ; i++ ) { Text_Clear(&menuItemPanel->textHandles[i]); } - movs r0, r6 @, _150 - bl .L270 @ + str r3, [sp, #28] @ _150, %sfp +@ SpellMenu.c:75: for ( int i = 0 ; i < 3 ; i++ ) { Text_Clear(&menuItemPanel->textHandles[i]); } + bl .L16 @ @ SpellMenu.c:76: MakeUIWindowTileMap_BG0BG1(x,y,14,8,0); - movs r5, #0 @ tmp229, + movs r4, #0 @ tmp229, movs r3, #8 @, movs r2, #14 @, - ldr r1, [sp, #28] @, %sfp - ldr r0, [sp, #24] @, %sfp - str r5, [sp] @ tmp229, - ldr r4, .L315+24 @ tmp398, - bl .L16 @ + ldr r1, [sp, #36] @, %sfp + ldr r0, [sp, #32] @, %sfp + str r4, [sp] @ tmp229, + ldr r5, .L314+24 @ tmp230, + bl .L269 @ @ SpellMenu.c:78: int spellType = GetItemType(spell); - movs r0, r7 @, spell - ldr r3, .L315+28 @ tmp231, + ldr r0, [sp, #12] @, %sfp + ldr r3, .L314+28 @ tmp231, bl .L14 @ - str r0, [sp, #12] @ tmp371, %sfp + str r0, [sp, #16] @ tmp371, %sfp @ SpellMenu.c:79: if ( spellType != ITYPE_STAFF ) cmp r0, #4 @ spellType, - bne .LCB2129 @ - b .L301 @long jump @ -.LCB2129: + bne .LCB2117 @ + b .L300 @long jump @ +.LCB2117: @ SpellMenu.c:81: BattleGenerateUiStats(gActiveUnit,9); // 9 is using a Gaiden spell. - ldr r3, .L315 @ tmp401, movs r1, #9 @, - ldr r0, [r3] @, gActiveUnit - ldr r3, .L315+32 @ tmp233, + ldr r3, .L314+32 @ tmp233, + ldr r0, [r7] @, gActiveUnit bl .L14 @ @ SpellMenu.c:82: Text_InsertString(&menuItemPanel->textHandles[0],0x02,0,GetStringFromIndex(0x4F1)); // Affin. - ldr r3, .L315+36 @ tmp402, - ldr r0, .L315+40 @, - bl .L14 @ + ldr r6, .L314+36 @ tmp235, + ldr r0, .L314+40 @, + bl .L15 @ @ SpellMenu.c:82: Text_InsertString(&menuItemPanel->textHandles[0],0x02,0,GetStringFromIndex(0x4F1)); // Affin. - movs r2, r5 @, tmp229 + ldr r5, .L314+44 @ tmp236, + movs r2, r4 @, tmp229 @ SpellMenu.c:82: Text_InsertString(&menuItemPanel->textHandles[0],0x02,0,GetStringFromIndex(0x4F1)); // Affin. movs r3, r0 @ _19, tmp372 @ SpellMenu.c:82: Text_InsertString(&menuItemPanel->textHandles[0],0x02,0,GetStringFromIndex(0x4F1)); // Affin. movs r1, #2 @, - ldr r0, [sp, #16] @, %sfp - ldr r4, .L315+44 @ tmp404, - bl .L16 @ + ldr r0, [sp, #20] @, %sfp + bl .L269 @ @ SpellMenu.c:83: Text_InsertString(&menuItemPanel->textHandles[0],0x32,0,GetStringFromIndex(gGaidenMagicHPCostText)); // HP Cost. - ldr r3, .L315+48 @ tmp237, + ldr r3, .L314+48 @ tmp237, ldrh r0, [r3] @ gGaidenMagicHPCostText, gGaidenMagicHPCostText - ldr r3, .L315+36 @ tmp406, - bl .L14 @ + bl .L15 @ @ SpellMenu.c:83: Text_InsertString(&menuItemPanel->textHandles[0],0x32,0,GetStringFromIndex(gGaidenMagicHPCostText)); // HP Cost. - movs r2, r5 @, tmp229 + movs r2, r4 @, tmp229 @ SpellMenu.c:83: Text_InsertString(&menuItemPanel->textHandles[0],0x32,0,GetStringFromIndex(gGaidenMagicHPCostText)); // HP Cost. movs r3, r0 @ _23, tmp373 @ SpellMenu.c:83: Text_InsertString(&menuItemPanel->textHandles[0],0x32,0,GetStringFromIndex(gGaidenMagicHPCostText)); // HP Cost. movs r1, #50 @, - ldr r0, [sp, #16] @, %sfp - ldr r4, .L315+44 @ tmp408, - bl .L16 @ + ldr r0, [sp, #20] @, %sfp + bl .L269 @ @ SpellMenu.c:84: Text_InsertString(&menuItemPanel->textHandles[1],0x02,0,GetStringFromIndex(0x4F3)); // Atk. - ldr r3, .L315+36 @ tmp410, - ldr r0, .L315+52 @, - bl .L14 @ + ldr r0, .L314+52 @, + bl .L15 @ @ SpellMenu.c:84: Text_InsertString(&menuItemPanel->textHandles[1],0x02,0,GetStringFromIndex(0x4F3)); // Atk. - movs r2, r5 @, tmp229 + movs r2, r4 @, tmp229 @ SpellMenu.c:84: Text_InsertString(&menuItemPanel->textHandles[1],0x02,0,GetStringFromIndex(0x4F3)); // Atk. movs r3, r0 @ _25, tmp374 @ SpellMenu.c:84: Text_InsertString(&menuItemPanel->textHandles[1],0x02,0,GetStringFromIndex(0x4F3)); // Atk. movs r1, #2 @, - ldr r0, [sp, #20] @, %sfp - ldr r4, .L315+44 @ tmp412, - bl .L16 @ + ldr r0, [sp, #24] @, %sfp + bl .L269 @ @ SpellMenu.c:85: Text_InsertString(&menuItemPanel->textHandles[2],0x02,0,GetStringFromIndex(0x4F4)); // Hit. - ldr r3, .L315+36 @ tmp414, - ldr r0, .L315+56 @, - bl .L14 @ + ldr r0, .L314+56 @, + bl .L15 @ @ SpellMenu.c:85: Text_InsertString(&menuItemPanel->textHandles[2],0x02,0,GetStringFromIndex(0x4F4)); // Hit. - movs r2, r5 @, tmp229 + movs r2, r4 @, tmp229 @ SpellMenu.c:85: Text_InsertString(&menuItemPanel->textHandles[2],0x02,0,GetStringFromIndex(0x4F4)); // Hit. movs r3, r0 @ _27, tmp375 @ SpellMenu.c:85: Text_InsertString(&menuItemPanel->textHandles[2],0x02,0,GetStringFromIndex(0x4F4)); // Hit. movs r1, #2 @, - movs r0, r6 @, _150 - ldr r4, .L315+44 @ tmp416, - bl .L16 @ + ldr r0, [sp, #28] @, %sfp + bl .L269 @ @ SpellMenu.c:86: Text_InsertString(&menuItemPanel->textHandles[1],0x32,0,GetStringFromIndex(0x501)); // Crit. - ldr r3, .L315+36 @ tmp418, - ldr r0, .L315+60 @, - bl .L14 @ + ldr r0, .L314+60 @, + bl .L15 @ @ SpellMenu.c:86: Text_InsertString(&menuItemPanel->textHandles[1],0x32,0,GetStringFromIndex(0x501)); // Crit. - movs r2, r5 @, tmp229 + movs r2, r4 @, tmp229 @ SpellMenu.c:86: Text_InsertString(&menuItemPanel->textHandles[1],0x32,0,GetStringFromIndex(0x501)); // Crit. movs r3, r0 @ _28, tmp376 @ SpellMenu.c:86: Text_InsertString(&menuItemPanel->textHandles[1],0x32,0,GetStringFromIndex(0x501)); // Crit. movs r1, #50 @, - ldr r0, [sp, #20] @, %sfp - ldr r4, .L315+44 @ tmp420, - bl .L16 @ + ldr r0, [sp, #24] @, %sfp + bl .L269 @ @ SpellMenu.c:87: Text_InsertString(&menuItemPanel->textHandles[2],0x32,0,GetStringFromIndex(0x4F5)); // Avoid. - ldr r3, .L315+36 @ tmp422, - ldr r0, .L315+64 @, - bl .L14 @ + ldr r0, .L314+64 @, + bl .L15 @ @ SpellMenu.c:87: Text_InsertString(&menuItemPanel->textHandles[2],0x32,0,GetStringFromIndex(0x4F5)); // Avoid. - movs r2, r5 @, tmp229 + movs r2, r4 @, tmp229 @ SpellMenu.c:87: Text_InsertString(&menuItemPanel->textHandles[2],0x32,0,GetStringFromIndex(0x4F5)); // Avoid. movs r3, r0 @ _29, tmp377 @ SpellMenu.c:87: Text_InsertString(&menuItemPanel->textHandles[2],0x32,0,GetStringFromIndex(0x4F5)); // Avoid. movs r1, #50 @, - movs r0, r6 @, _150 - ldr r4, .L315+44 @ tmp424, - bl .L16 @ + ldr r0, [sp, #28] @, %sfp + bl .L269 @ @ SpellMenu.c:90: if ( !HasSufficientHP(gActiveUnit,spell) ) { CostColor = 1; } - ldr r3, .L315 @ tmp426, - movs r1, r7 @, spell - ldr r0, [r3] @, gActiveUnit + ldr r1, [sp, #12] @, %sfp + ldr r0, [r7] @, gActiveUnit bl HasSufficientHP @ -@ SpellMenu.c:90: if ( !HasSufficientHP(gActiveUnit,spell) ) { CostColor = 1; } +@ SpellMenu.c:89: int CostColor = 2; subs r3, r0, #1 @ tmp355, tmp378 sbcs r0, r0, r3 @ tmp378, tmp378, tmp355 - movs r5, r0 @ tmp354, tmp378 + movs r4, r0 @ tmp354, tmp378 @ SpellMenu.c:91: Text_InsertNumberOr2Dashes(&menuItemPanel->textHandles[0],0x54,CostColor,GetSpellCost(spell)); - movs r0, r7 @, spell + ldr r0, [sp, #12] @, %sfp bl GetSpellCost @ -@ SpellMenu.c:90: if ( !HasSufficientHP(gActiveUnit,spell) ) { CostColor = 1; } - adds r5, r5, #1 @ CostColor, +@ SpellMenu.c:89: int CostColor = 2; + adds r4, r4, #1 @ CostColor, @ SpellMenu.c:91: Text_InsertNumberOr2Dashes(&menuItemPanel->textHandles[0],0x54,CostColor,GetSpellCost(spell)); lsls r3, r0, #24 @ tmp254, tmp379, - movs r2, r5 @, CostColor + ldr r5, .L314+68 @ tmp256, + movs r2, r4 @, CostColor movs r1, #84 @, - ldr r5, .L315+68 @ tmp256, - ldr r0, [sp, #16] @, %sfp + ldr r0, [sp, #20] @, %sfp lsrs r3, r3, #24 @ tmp254, tmp254, - bl .L270 @ + bl .L269 @ @ SpellMenu.c:92: Text_InsertNumberOr2Dashes(&menuItemPanel->textHandles[1],0x24,2,gBattleActor.battleAttack); - ldr r4, .L315+72 @ tmp257, - movs r3, r4 @ tmp260, tmp257 - adds r3, r3, #90 @ tmp260, + ldr r3, .L314+72 @ tmp260, + ldr r4, .L314+76 @ tmp257, @ SpellMenu.c:92: Text_InsertNumberOr2Dashes(&menuItemPanel->textHandles[1],0x24,2,gBattleActor.battleAttack); movs r2, #2 @, movs r1, #36 @, ldrb r3, [r3] @ tmp264, - ldr r0, [sp, #20] @, %sfp - bl .L270 @ + ldr r0, [sp, #24] @, %sfp + bl .L269 @ @ SpellMenu.c:93: Text_InsertNumberOr2Dashes(&menuItemPanel->textHandles[2],0x24,2,gBattleActor.battleHitRate); movs r3, r4 @ tmp270, tmp257 adds r3, r3, #96 @ tmp270, @ SpellMenu.c:93: Text_InsertNumberOr2Dashes(&menuItemPanel->textHandles[2],0x24,2,gBattleActor.battleHitRate); movs r2, #2 @, movs r1, #36 @, - movs r0, r6 @, _150 ldrb r3, [r3] @ tmp274, - bl .L270 @ + ldr r0, [sp, #28] @, %sfp + bl .L269 @ @ SpellMenu.c:94: Text_InsertNumberOr2Dashes(&menuItemPanel->textHandles[1],0x54,2,gBattleActor.battleCritRate); movs r3, r4 @ tmp280, tmp257 adds r3, r3, #102 @ tmp280, @@ -2782,179 +2687,176 @@ SpellOnHover: movs r2, #2 @, movs r1, #84 @, ldrb r3, [r3] @ tmp284, - ldr r0, [sp, #20] @, %sfp + ldr r0, [sp, #24] @, %sfp @ SpellMenu.c:95: Text_InsertNumberOr2Dashes(&menuItemPanel->textHandles[2],0x54,2,gBattleActor.battleAvoidRate); adds r4, r4, #98 @ tmp290, @ SpellMenu.c:94: Text_InsertNumberOr2Dashes(&menuItemPanel->textHandles[1],0x54,2,gBattleActor.battleCritRate); - bl .L270 @ + bl .L269 @ @ SpellMenu.c:95: Text_InsertNumberOr2Dashes(&menuItemPanel->textHandles[2],0x54,2,gBattleActor.battleAvoidRate); movs r2, #2 @, movs r1, #84 @, - movs r0, r6 @, _150 ldrb r3, [r4] @ tmp294, - bl .L270 @ -.L305: - ldr r5, [sp, #28] @ y, %sfp - ldr r3, [sp, #24] @ _14, %sfp + ldr r0, [sp, #28] @, %sfp + bl .L269 @ +.L302: + ldr r3, [sp, #32] @ _14, %sfp + ldr r5, [sp, #36] @ y, %sfp + adds r4, r3, #1 @ tmp326, _14, adds r5, r5, #1 @ y, - adds r4, r3, #1 @ tmp298, _14, - lsls r5, r5, #5 @ _158, tmp297, - ldr r3, .L315+76 @ tmp434, - adds r4, r4, r5 @ tmp299, tmp298, _158 - lsls r4, r4, #1 @ tmp300, tmp299, - adds r4, r4, r3 @ ivtmp.381, tmp300, tmp434 ldr r3, [sp, #8] @ _173, %sfp - ldr r6, [sp, #8] @ ivtmp.379, %sfp + lsls r5, r5, #5 @ _158, tmp325, + ldr r6, [sp, #8] @ ivtmp.386, %sfp + ldr r7, .L314+80 @ tmp329, + adds r4, r4, r5 @ tmp327, tmp326, _158 adds r3, r3, #76 @ _173, - str r3, [sp, #16] @ _173, %sfp - adds r6, r6, #52 @ ivtmp.379, -.L303: + lsls r4, r4, #1 @ tmp328, tmp327, + str r3, [sp, #20] @ _173, %sfp + adds r6, r6, #52 @ ivtmp.386, + adds r4, r4, r7 @ ivtmp.388, tmp328, tmp329 +.L304: @ SpellMenu.c:115: for ( int i = 0 ; i < 3 ; i++ ) { Text_Display(&menuItemPanel->textHandles[i],&gBG0MapBuffer[y+1+2*i][x+1]); } - movs r1, r4 @, ivtmp.381 - movs r0, r6 @, ivtmp.379 - ldr r3, .L315+80 @ tmp330, + movs r1, r4 @, ivtmp.388 + movs r0, r6 @, ivtmp.386 + ldr r3, .L314+84 @ tmp330, bl .L14 @ @ SpellMenu.c:115: for ( int i = 0 ; i < 3 ; i++ ) { Text_Display(&menuItemPanel->textHandles[i],&gBG0MapBuffer[y+1+2*i][x+1]); } - ldr r3, [sp, #16] @ _173, %sfp - adds r6, r6, #8 @ ivtmp.379, - adds r4, r4, #128 @ ivtmp.381, - cmp r6, r3 @ ivtmp.379, _173 - bne .L303 @, + ldr r3, [sp, #20] @ _173, %sfp + adds r6, r6, #8 @ ivtmp.386, + adds r4, r4, #128 @ ivtmp.388, + cmp r6, r3 @ ivtmp.386, _173 + bne .L304 @, @ SpellMenu.c:117: if ( spellType != ITYPE_STAFF ) { DrawIcon(&gBG0MapBuffer[y+1][x+5],spellType+0x70,menuItemPanel->oam2base<<0xC); } // This HAS to happen after the Text_Display calls. - ldr r3, [sp, #12] @ spellType, %sfp + ldr r3, [sp, #16] @ spellType, %sfp cmp r3, #4 @ spellType, - beq .L306 @, + beq .L305 @, +@ SpellMenu.c:117: if ( spellType != ITYPE_STAFF ) { DrawIcon(&gBG0MapBuffer[y+1][x+5],spellType+0x70,menuItemPanel->oam2base<<0xC); } // This HAS to happen after the Text_Display calls. + ldr r3, [sp, #8] @ menuItemPanel, %sfp +@ SpellMenu.c:117: if ( spellType != ITYPE_STAFF ) { DrawIcon(&gBG0MapBuffer[y+1][x+5],spellType+0x70,menuItemPanel->oam2base<<0xC); } // This HAS to happen after the Text_Display calls. + ldr r0, [sp, #32] @ _14, %sfp @ SpellMenu.c:117: if ( spellType != ITYPE_STAFF ) { DrawIcon(&gBG0MapBuffer[y+1][x+5],spellType+0x70,menuItemPanel->oam2base<<0xC); } // This HAS to happen after the Text_Display calls. - ldr r0, [sp, #8] @ menuItemPanel, %sfp - adds r0, r0, #50 @ menuItemPanel, - ldrb r2, [r0] @ tmp334, + adds r3, r3, #50 @ menuItemPanel, @ SpellMenu.c:117: if ( spellType != ITYPE_STAFF ) { DrawIcon(&gBG0MapBuffer[y+1][x+5],spellType+0x70,menuItemPanel->oam2base<<0xC); } // This HAS to happen after the Text_Display calls. - ldr r0, [sp, #24] @ _14, %sfp adds r0, r0, #5 @ _14, @ SpellMenu.c:117: if ( spellType != ITYPE_STAFF ) { DrawIcon(&gBG0MapBuffer[y+1][x+5],spellType+0x70,menuItemPanel->oam2base<<0xC); } // This HAS to happen after the Text_Display calls. - ldr r3, .L315+76 @ tmp446, - ldr r1, [sp, #12] @ tmp336, %sfp + ldrb r2, [r3] @ tmp334, +@ SpellMenu.c:117: if ( spellType != ITYPE_STAFF ) { DrawIcon(&gBG0MapBuffer[y+1][x+5],spellType+0x70,menuItemPanel->oam2base<<0xC); } // This HAS to happen after the Text_Display calls. + ldr r1, [sp, #16] @ tmp336, %sfp adds r0, r0, r5 @ tmp338, tmp337, _158 lsls r0, r0, #1 @ tmp339, tmp338, - adds r0, r3, r0 @ tmp340, tmp446, tmp339 + ldr r3, .L314+88 @ tmp342, lsls r2, r2, #12 @ tmp335, tmp334, - ldr r3, .L315+84 @ tmp342, + adds r0, r7, r0 @ tmp340, tmp329, tmp339 adds r1, r1, #112 @ tmp336, bl .L14 @ -.L306: +.L305: @ SpellMenu.c:123: gWrite_Range(gActiveUnit->xPos,gActiveUnit->yPos,gGet_Item_Range(gActiveUnit,spell)); movs r5, #16 @ _67, movs r6, #17 @ _69, @ SpellMenu.c:119: BmMapFill(gMapMovement,-1); - ldr r3, .L315+88 @ tmp343, - ldr r4, .L315+92 @ tmp344, + ldr r3, .L314+92 @ tmp343, + ldr r4, .L314+96 @ tmp344, ldr r0, [r3] @, gMapMovement movs r1, #255 @, bl .L16 @ @ SpellMenu.c:120: BmMapFill(gMapRange,0); - ldr r3, .L315+96 @ tmp345, + ldr r3, .L314+100 @ tmp345, movs r1, #0 @, ldr r0, [r3] @, gMapRange bl .L16 @ @ SpellMenu.c:123: gWrite_Range(gActiveUnit->xPos,gActiveUnit->yPos,gGet_Item_Range(gActiveUnit,spell)); - ldr r3, .L315+100 @ tmp347, + ldr r3, .L314+104 @ tmp347, ldr r4, [r3] @ gWrite_Range.103_64, gWrite_Range @ SpellMenu.c:123: gWrite_Range(gActiveUnit->xPos,gActiveUnit->yPos,gGet_Item_Range(gActiveUnit,spell)); - ldr r3, .L315 @ tmp348, + ldr r3, .L314+4 @ tmp348, ldr r0, [r3] @ gActiveUnit.104_65, gActiveUnit @ SpellMenu.c:123: gWrite_Range(gActiveUnit->xPos,gActiveUnit->yPos,gGet_Item_Range(gActiveUnit,spell)); - ldr r3, .L315+104 @ tmp349, - movs r1, r7 @, spell + ldr r3, .L314+108 @ tmp349, + ldr r1, [sp, #12] @, %sfp ldr r3, [r3] @ gGet_Item_Range, gGet_Item_Range ldrsb r5, [r0, r5] @ _67,* _67 ldrsb r6, [r0, r6] @ _69,* _69 bl .L14 @ - movs r2, r0 @ _71, tmp386 movs r3, r1 @ _71, tmp387 - movs r0, r5 @, _67 + movs r2, r0 @ _71, tmp386 movs r1, r6 @, _69 + movs r0, r5 @, _67 bl .L16 @ @ SpellMenu.c:124: DisplayMoveRangeGraphics(( spellType == ITYPE_STAFF ? 4 : 2 )); // See note in UnitMenu.c. - ldr r0, [sp, #12] @ iftmp.108_77, %sfp - cmp r0, #4 @ spellType, - beq .L307 @, + ldr r3, [sp, #16] @ spellType, %sfp movs r0, #2 @ iftmp.108_77, -.L307: + cmp r3, #4 @ spellType, + bne .L306 @, + movs r0, r3 @ iftmp.108_77, spellType +.L306: @ SpellMenu.c:124: DisplayMoveRangeGraphics(( spellType == ITYPE_STAFF ? 4 : 2 )); // See note in UnitMenu.c. - ldr r3, .L315+108 @ tmp351, + ldr r3, .L314+112 @ tmp351, bl .L14 @ @ SpellMenu.c:126: } movs r0, #0 @, - add sp, sp, #36 @,, + add sp, sp, #44 @,, @ sp needed @ pop {r4, r5, r6, r7} pop {r1} bx r1 -.L301: +.L300: @ SpellMenu.c:100: const char* desc = GetStringFromIndex(GetItemUseDescId(spell)); - ldr r3, .L315+112 @ tmp302, - movs r0, r7 @, spell + ldr r3, .L314+116 @ tmp297, + ldr r0, [sp, #12] @, %sfp bl .L14 @ - ldr r3, .L315+36 @ tmp303, + ldr r3, .L314+36 @ tmp298, bl .L14 @ - ldr r4, [sp, #16] @ ivtmp.386, %sfp + ldr r5, [sp, #20] @ ivtmp.393, %sfp @ SpellMenu.c:102: desc--; subs r0, r0, #1 @ desc, -.L304: +.L303: @ SpellMenu.c:106: Text_InsertString(&menuItemPanel->textHandles[j],0,0,desc); movs r2, #0 @, @ SpellMenu.c:105: desc++; - adds r5, r0, #1 @ desc, desc, + adds r4, r0, #1 @ desc, desc, @ SpellMenu.c:106: Text_InsertString(&menuItemPanel->textHandles[j],0,0,desc); - movs r3, r5 @, desc - movs r0, r4 @, ivtmp.386 + movs r3, r4 @, desc + movs r0, r5 @, ivtmp.393 movs r1, r2 @, - ldr r6, .L315+44 @ tmp304, + ldr r6, .L314+44 @ tmp299, bl .L15 @ @ SpellMenu.c:107: desc = Text_GetStringNextLine(desc); - ldr r3, .L315+116 @ tmp305, - movs r0, r5 @, desc + ldr r3, .L314+120 @ tmp300, + movs r0, r4 @, desc bl .L14 @ @ SpellMenu.c:109: } while ( *desc ); ldrb r3, [r0] @ *desc_103, *desc_103 - adds r4, r4, #8 @ ivtmp.386, + adds r5, r5, #8 @ ivtmp.393, cmp r3, #0 @ *desc_103, - bne .L304 @, -@ SpellMenu.c:110: gBattleActor.battleAttack = gBattleTarget.battleAttack; // ??? this is something vanilla does??? - ldr r2, .L315+120 @ tmp308, -@ SpellMenu.c:110: gBattleActor.battleAttack = gBattleTarget.battleAttack; // ??? this is something vanilla does??? - ldr r3, .L315+72 @ tmp307, -@ SpellMenu.c:110: gBattleActor.battleAttack = gBattleTarget.battleAttack; // ??? this is something vanilla does??? - movs r0, r2 @ tmp311, tmp308 -@ SpellMenu.c:110: gBattleActor.battleAttack = gBattleTarget.battleAttack; // ??? this is something vanilla does??? - movs r1, r3 @ tmp314, tmp307 + bne .L303 @, @ SpellMenu.c:110: gBattleActor.battleAttack = gBattleTarget.battleAttack; // ??? this is something vanilla does??? - adds r0, r0, #90 @ tmp311, + ldr r0, .L314+124 @ tmp306, + ldr r2, .L314+128 @ tmp303, @ SpellMenu.c:110: gBattleActor.battleAttack = gBattleTarget.battleAttack; // ??? this is something vanilla does??? - ldrh r0, [r0] @ tmp315, - adds r1, r1, #90 @ tmp314, - strh r0, [r1] @ tmp315, gBattleActor.battleAttack + ldrh r0, [r0] @ tmp310, + ldr r1, .L314+72 @ tmp309, + ldr r3, .L314+76 @ tmp302, + strh r0, [r1] @ tmp310, gBattleActor.battleAttack @ SpellMenu.c:112: gBattleActor.battleCritRate = gBattleTarget.battleCritRate; - movs r0, r2 @ tmp321, tmp308 + movs r0, r2 @ tmp316, tmp303 @ SpellMenu.c:112: gBattleActor.battleCritRate = gBattleTarget.battleCritRate; - movs r1, r3 @ tmp324, tmp307 + movs r1, r3 @ tmp319, tmp302 @ SpellMenu.c:112: gBattleActor.battleCritRate = gBattleTarget.battleCritRate; - adds r0, r0, #102 @ tmp321, + adds r0, r0, #102 @ tmp316, @ SpellMenu.c:112: gBattleActor.battleCritRate = gBattleTarget.battleCritRate; - ldrh r0, [r0] @ tmp325, + ldrh r0, [r0] @ tmp320, @ SpellMenu.c:111: gBattleActor.battleHitRate = gBattleTarget.battleHitRate; // ??? this fixes the green/red arrows from showing on staves??? - ldr r2, [r2, #96] @ tmp440, MEM [(short int *)&gBattleTarget + 96B] + ldr r2, [r2, #96] @ MEM [(short int *)&gBattleTarget + 96B], MEM [(short int *)&gBattleTarget + 96B] @ SpellMenu.c:112: gBattleActor.battleCritRate = gBattleTarget.battleCritRate; - adds r1, r1, #102 @ tmp324, - strh r0, [r1] @ tmp325, gBattleActor.battleCritRate + adds r1, r1, #102 @ tmp319, + strh r0, [r1] @ tmp320, gBattleActor.battleCritRate @ SpellMenu.c:111: gBattleActor.battleHitRate = gBattleTarget.battleHitRate; // ??? this fixes the green/red arrows from showing on staves??? - str r2, [r3, #96] @ tmp440, MEM [(short int *)&gBattleActor + 96B] - b .L305 @ -.L316: - .align 2 + str r2, [r3, #96] @ MEM [(short int *)&gBattleTarget + 96B], MEM [(short int *)&gBattleActor + 96B] + b .L302 @ .L315: - .word gActiveUnit + .align 2 +.L314: .word UsingSpellMenu + .word gActiveUnit .word SelectedSpell .word gProc_MenuItemPanel .word ProcFind @@ -2971,6 +2873,7 @@ SpellOnHover: .word 1281 .word 1269 .word Text_InsertNumberOr2Dashes + .word gBattleActor+90 .word gBattleActor .word gBG0MapBuffer .word Text_Display @@ -2983,6 +2886,7 @@ SpellOnHover: .word DisplayMoveRangeGraphics .word GetItemUseDescId .word Text_GetStringNextLine + .word gBattleTarget+90 .word gBattleTarget .size SpellOnHover, .-SpellOnHover .align 1 @@ -2990,7 +2894,6 @@ SpellOnHover: .syntax unified .code 16 .thumb_func - .fpu softvfp .type SpellOnUnhover, %function SpellOnUnhover: @ Function supports interworking. @@ -2998,15 +2901,15 @@ SpellOnUnhover: @ frame_needed = 0, uses_anonymous_args = 0 push {r4, lr} @ @ SpellMenu.c:130: if ( !DidSelectSpell ) // Don't hide the squares if we're going to the target selection menu. - ldr r4, .L319 @ tmp116, + ldr r4, .L318 @ tmp116, @ SpellMenu.c:130: if ( !DidSelectSpell ) // Don't hide the squares if we're going to the target selection menu. ldrb r3, [r4] @ DidSelectSpell, DidSelectSpell cmp r3, #0 @ DidSelectSpell, - bne .L318 @, + bne .L317 @, @ SpellMenu.c:132: HideMoveRangeGraphics(); - ldr r3, .L319+4 @ tmp118, + ldr r3, .L318+4 @ tmp118, bl .L14 @ -.L318: +.L317: @ SpellMenu.c:136: } @ sp needed @ @ SpellMenu.c:134: DidSelectSpell = 0; // Unset this variable. @@ -3016,9 +2919,9 @@ SpellOnUnhover: pop {r4} pop {r1} bx r1 -.L320: - .align 2 .L319: + .align 2 +.L318: .word DidSelectSpell .word HideMoveRangeGraphics .size SpellOnUnhover, .-SpellOnUnhover @@ -3027,85 +2930,88 @@ SpellOnUnhover: .syntax unified .code 16 .thumb_func - .fpu softvfp .type NewMenuRText, %function NewMenuRText: @ Function supports interworking. - @ args = 0, pretend = 0, frame = 8 + @ args = 0, pretend = 0, frame = 16 @ frame_needed = 0, uses_anonymous_args = 0 movs r3, r1 @ commandProc, tmp173 - push {r0, r1, r2, r4, r5, r6, r7, lr} @ + push {r4, r5, r6, r7, lr} @ @ SpellMenu.c:142: if ( UsingSpellMenu ) - ldr r2, .L326 @ tmp176, + ldr r2, .L325 @ tmp144, @ SpellMenu.c:140: int xTile = commandProc->xDrawTile * 8; ldrh r4, [r1, #42] @ tmp142, @ SpellMenu.c:141: int yTile = commandProc->yDrawTile * 8; ldrh r5, [r1, #44] @ tmp143, @ SpellMenu.c:142: if ( UsingSpellMenu ) ldrb r1, [r2] @ UsingSpellMenu.110_5, UsingSpellMenu +@ SpellMenu.c:139: { + sub sp, sp, #20 @,, adds r3, r3, #60 @ commandProc, - str r3, [sp] @ commandProc, %sfp - ldr r6, .L326+4 @ tmp172, +@ SpellMenu.c:142: if ( UsingSpellMenu ) + str r2, [sp, #4] @ tmp144, %sfp + str r3, [sp, #8] @ commandProc, %sfp + ldr r7, .L325+4 @ tmp172, @ SpellMenu.c:140: int xTile = commandProc->xDrawTile * 8; lsls r4, r4, #3 @ xTile, tmp142, @ SpellMenu.c:141: int yTile = commandProc->yDrawTile * 8; lsls r5, r5, #3 @ yTile, tmp143, @ SpellMenu.c:142: if ( UsingSpellMenu ) cmp r1, #0 @ UsingSpellMenu.110_5, - beq .L322 @, + beq .L321 @, @ SpellMenu.c:145: DrawItemRText(xTile,yTile,SpellsGetter(gActiveUnit,UsingSpellMenu)[GetNthUsableSpell(gActiveUnit,commandProc->commandDefinitionIndex,UsingSpellMenu)]); - ldr r7, .L326+8 @ tmp145, - ldr r0, [r7] @, gActiveUnit + ldr r6, .L325+8 @ tmp145, + ldr r0, [r6] @, gActiveUnit bl SpellsGetter @ @ SpellMenu.c:145: DrawItemRText(xTile,yTile,SpellsGetter(gActiveUnit,UsingSpellMenu)[GetNthUsableSpell(gActiveUnit,commandProc->commandDefinitionIndex,UsingSpellMenu)]); - ldr r3, .L326 @ tmp178, + ldr r3, [sp, #4] @ tmp144, %sfp @ SpellMenu.c:145: DrawItemRText(xTile,yTile,SpellsGetter(gActiveUnit,UsingSpellMenu)[GetNthUsableSpell(gActiveUnit,commandProc->commandDefinitionIndex,UsingSpellMenu)]); - str r0, [sp, #4] @ tmp174, %sfp + str r0, [sp, #12] @ tmp174, %sfp @ SpellMenu.c:145: DrawItemRText(xTile,yTile,SpellsGetter(gActiveUnit,UsingSpellMenu)[GetNthUsableSpell(gActiveUnit,commandProc->commandDefinitionIndex,UsingSpellMenu)]); ldrb r2, [r3] @ UsingSpellMenu, UsingSpellMenu - ldr r3, [sp] @ tmp171, %sfp - ldr r0, [r7] @, gActiveUnit + ldr r3, [sp, #8] @ tmp171, %sfp + ldr r0, [r6] @, gActiveUnit ldrb r1, [r3] @ tmp151, bl GetNthUsableSpell @ @ SpellMenu.c:145: DrawItemRText(xTile,yTile,SpellsGetter(gActiveUnit,UsingSpellMenu)[GetNthUsableSpell(gActiveUnit,commandProc->commandDefinitionIndex,UsingSpellMenu)]); - ldr r3, [sp, #4] @ _8, %sfp + ldr r3, [sp, #12] @ _8, %sfp ldrb r2, [r3, r0] @ *_16, *_16 -.L325: -@ SpellMenu.c:159: } - @ sp needed @ +.L324: @ SpellMenu.c:156: DrawItemRText(xTile,yTile,*((u16*)&gGameState+0x16)); // Probably related to special cases like ballistae? movs r1, r5 @, yTile movs r0, r4 @, xTile - bl .L15 @ + bl .L327 @ @ SpellMenu.c:159: } - pop {r0, r1, r2, r4, r5, r6, r7} + add sp, sp, #20 @,, + @ sp needed @ + pop {r4, r5, r6, r7} pop {r0} bx r0 -.L322: +.L321: @ SpellMenu.c:150: if ( commandProc->commandDefinitionIndex <= 4 ) - ldr r3, [sp] @ tmp171, %sfp + ldr r3, [sp, #8] @ tmp171, %sfp ldrb r3, [r3] @ _19, @ SpellMenu.c:150: if ( commandProc->commandDefinitionIndex <= 4 ) cmp r3, #4 @ _19, - bhi .L324 @, + bhi .L323 @, @ SpellMenu.c:152: DrawItemRText(xTile,yTile,gActiveUnit->items[commandProc->commandDefinitionIndex]); - ldr r2, .L326+8 @ tmp161, + ldr r2, .L325+8 @ tmp161, adds r3, r3, #12 @ tmp162, ldr r2, [r2] @ gActiveUnit, gActiveUnit lsls r3, r3, #1 @ tmp163, tmp162, adds r3, r2, r3 @ tmp164, gActiveUnit, tmp163 @ SpellMenu.c:152: DrawItemRText(xTile,yTile,gActiveUnit->items[commandProc->commandDefinitionIndex]); ldrh r2, [r3, #6] @ tmp166, *gActiveUnit.115_20 - b .L325 @ -.L324: + b .L324 @ +.L323: @ SpellMenu.c:156: DrawItemRText(xTile,yTile,*((u16*)&gGameState+0x16)); // Probably related to special cases like ballistae? - ldr r3, .L326+12 @ tmp168, + ldr r3, .L325+12 @ tmp168, @ SpellMenu.c:156: DrawItemRText(xTile,yTile,*((u16*)&gGameState+0x16)); // Probably related to special cases like ballistae? ldrh r2, [r3, #44] @ MEM[(u16 *)&gGameState + 44B], MEM[(u16 *)&gGameState + 44B] - b .L325 @ -.L327: - .align 2 + b .L324 @ .L326: + .align 2 +.L325: .word UsingSpellMenu .word DrawItemRText .word gActiveUnit @@ -3116,7 +3022,6 @@ NewMenuRText: .syntax unified .code 16 .thumb_func - .fpu softvfp .type NewExitBattleForecast, %function NewExitBattleForecast: @ Function supports interworking. @@ -3171,7 +3076,6 @@ NewExitBattleForecast: .syntax unified .code 16 .thumb_func - .fpu softvfp .type GaidenStatScreen, %function GaidenStatScreen: @ Function supports interworking. @@ -3180,7 +3084,7 @@ GaidenStatScreen: push {r4, r5, r6, r7, lr} @ sub sp, sp, #28 @,, @ StatScreen.c:3: { - str r1, [sp, #12] @ tmp182, %sfp + str r1, [sp, #8] @ tmp182, %sfp @ StatScreen.c:4: u8* spells = SpellsGetter(gpStatScreenUnit,-1); movs r1, #1 @, @ StatScreen.c:3: { @@ -3188,24 +3092,24 @@ GaidenStatScreen: @ StatScreen.c:4: u8* spells = SpellsGetter(gpStatScreenUnit,-1); ldr r3, .L339 @ tmp144, @ StatScreen.c:3: { - str r0, [sp, #8] @ tmp181, %sfp + str r0, [sp, #4] @ tmp181, %sfp @ StatScreen.c:4: u8* spells = SpellsGetter(gpStatScreenUnit,-1); rsbs r1, r1, #0 @, ldr r0, [r3] @, gpStatScreenUnit bl SpellsGetter @ @ StatScreen.c:5: int tile = (currHandle-1)->tileIndexOffset; movs r3, r4 @ tmp145, currHandle - movs r7, r0 @ ivtmp.409, tmp184 + movs r7, r0 @ ivtmp.416, tmp184 subs r3, r3, #8 @ tmp145, @ StatScreen.c:5: int tile = (currHandle-1)->tileIndexOffset; ldrh r3, [r3] @ tile, MEM[(struct TextHandle *)currHandle_27(D) + 4294967288B] @ StatScreen.c:8: for ( int i = 0 ; spells[i] ; i++ ) - ldr r6, [sp, #8] @ iconX, %sfp + ldr r6, [sp, #4] @ iconX, %sfp @ StatScreen.c:5: int tile = (currHandle-1)->tileIndexOffset; - str r3, [sp, #4] @ tile, %sfp + str r3, [sp] @ tile, %sfp .L335: @ StatScreen.c:8: for ( int i = 0 ; spells[i] ; i++ ) - ldrb r0, [r7] @ _15, MEM[base: _62, offset: 0B] + ldrb r0, [r7] @ _15, MEM[(u8 *)_62] @ StatScreen.c:8: for ( int i = 0 ; spells[i] ; i++ ) cmp r0, #0 @ _15, bne .L338 @, @@ -3222,45 +3126,46 @@ GaidenStatScreen: bl .L14 @ @ StatScreen.c:11: DrawIcon(&StatScreenBufferMap[iconY][iconX],item->iconId,0x4000); movs r2, #128 @, - ldr r3, [sp, #12] @ y, %sfp + ldr r3, [sp, #8] @ y, %sfp @ StatScreen.c:10: const ItemData* item = GetItemData(spells[i]); - str r0, [sp, #16] @ tmp185, %sfp + str r0, [sp, #12] @ tmp185, %sfp lsls r3, r3, #5 @ _56, y, @ StatScreen.c:11: DrawIcon(&StatScreenBufferMap[iconY][iconX],item->iconId,0x4000); ldrb r1, [r0, #29] @ tmp148, - str r3, [sp, #20] @ _56, %sfp + str r3, [sp, #16] @ _56, %sfp adds r0, r6, r3 @ tmp149, iconX, _56 - ldr r3, .L339+8 @ tmp195, + ldr r3, .L339+8 @ tmp152, lsls r0, r0, #1 @ tmp150, tmp149, lsls r2, r2, #7 @,, - adds r0, r0, r3 @ tmp151, tmp150, tmp195 + adds r0, r0, r3 @ tmp151, tmp150, tmp152 + str r3, [sp, #20] @ tmp152, %sfp ldr r3, .L339+12 @ tmp153, bl .L14 @ @ StatScreen.c:13: tile += 6; - ldr r3, [sp, #4] @ tile, %sfp + ldr r3, [sp] @ tile, %sfp adds r3, r3, #6 @ tile, @ StatScreen.c:15: currHandle->xCursor = 0; movs r5, #0 @ tmp155, @ StatScreen.c:14: currHandle->tileIndexOffset = tile; - strh r3, [r4] @ tile, MEM[base: currHandle_16, offset: 0B] + strh r3, [r4] @ tile, MEM[(short unsigned int *)currHandle_16] @ StatScreen.c:13: tile += 6; - str r3, [sp, #4] @ tile, %sfp + str r3, [sp] @ tile, %sfp @ StatScreen.c:17: currHandle->tileWidth = 6; - movs r3, #6 @ tmp199, + movs r3, #6 @ tmp202, @ StatScreen.c:22: Text_Clear(currHandle); movs r0, r4 @, currHandle @ StatScreen.c:15: currHandle->xCursor = 0; - strb r5, [r4, #2] @ tmp155, MEM[base: currHandle_16, offset: 2B] + strb r5, [r4, #2] @ tmp155, MEM[(unsigned char *)currHandle_16 + 2B] @ StatScreen.c:16: currHandle->colorId = TEXT_COLOR_NORMAL; - strb r5, [r4, #3] @ tmp155, MEM[base: currHandle_16, offset: 3B] + strb r5, [r4, #3] @ tmp155, MEM[(unsigned char *)currHandle_16 + 3B] @ StatScreen.c:17: currHandle->tileWidth = 6; - strb r3, [r4, #4] @ tmp198, MEM[base: currHandle_16, offset: 4B] + strb r3, [r4, #4] @ tmp201, MEM[(unsigned char *)currHandle_16 + 4B] @ StatScreen.c:18: currHandle->useDoubleBuffer = 0; - strb r5, [r4, #5] @ tmp155, MEM[base: currHandle_16, offset: 5B] + strb r5, [r4, #5] @ tmp155, MEM[(unsigned char *)currHandle_16 + 5B] @ StatScreen.c:19: currHandle->currentBufferId = 0; - strb r5, [r4, #6] @ tmp155, MEM[base: currHandle_16, offset: 6B] + strb r5, [r4, #6] @ tmp155, MEM[(unsigned char *)currHandle_16 + 6B] @ StatScreen.c:20: currHandle->unk07 = 0; - strb r5, [r4, #7] @ tmp155, MEM[base: currHandle_16, offset: 7B] + strb r5, [r4, #7] @ tmp155, MEM[(unsigned char *)currHandle_16 + 7B] @ StatScreen.c:22: Text_Clear(currHandle); ldr r3, .L339+16 @ tmp167, bl .L14 @ @@ -3270,7 +3175,7 @@ GaidenStatScreen: ldr r3, .L339+20 @ tmp168, bl .L14 @ @ StatScreen.c:24: Text_InsertString(currHandle,0,TEXT_COLOR_NORMAL,GetStringFromIndex(item->nameTextId)); - ldr r3, [sp, #16] @ item, %sfp + ldr r3, [sp, #12] @ item, %sfp ldrh r0, [r3] @ *item_32, *item_32 ldr r3, .L339+24 @ tmp170, bl .L14 @ @@ -3282,21 +3187,21 @@ GaidenStatScreen: movs r1, r5 @, tmp155 movs r0, r4 @, currHandle ldr r5, .L339+28 @ tmp171, - bl .L270 @ + bl .L269 @ @ StatScreen.c:25: Text_Display(currHandle,&StatScreenBufferMap[iconY][iconX+2]); - ldr r3, [sp, #20] @ _56, %sfp + ldr r3, [sp, #16] @ _56, %sfp @ StatScreen.c:25: Text_Display(currHandle,&StatScreenBufferMap[iconY][iconX+2]); adds r1, r6, #2 @ tmp172, iconX, @ StatScreen.c:25: Text_Display(currHandle,&StatScreenBufferMap[iconY][iconX+2]); adds r1, r1, r3 @ tmp173, tmp172, _56 - ldr r3, .L339+8 @ tmp202, + ldr r3, [sp, #20] @ tmp152, %sfp lsls r1, r1, #1 @ tmp174, tmp173, movs r0, r4 @, currHandle - adds r1, r1, r3 @ tmp175, tmp174, tmp202 + adds r1, r1, r3 @ tmp175, tmp174, tmp152 ldr r3, .L339+32 @ tmp177, bl .L14 @ @ StatScreen.c:28: if ( iconX == x ) { iconX += 8; } - ldr r3, [sp, #8] @ x, %sfp + ldr r3, [sp, #4] @ x, %sfp @ StatScreen.c:27: currHandle++; adds r4, r4, #8 @ currHandle, @ StatScreen.c:28: if ( iconX == x ) { iconX += 8; } @@ -3305,14 +3210,14 @@ GaidenStatScreen: @ StatScreen.c:28: if ( iconX == x ) { iconX += 8; } adds r6, r6, #8 @ iconX, .L337: - adds r7, r7, #1 @ ivtmp.409, + adds r7, r7, #1 @ ivtmp.416, b .L335 @ .L336: @ StatScreen.c:29: else { iconX = x; iconY += 2; } - ldr r3, [sp, #12] @ y, %sfp + ldr r3, [sp, #8] @ y, %sfp adds r3, r3, #2 @ y, - str r3, [sp, #12] @ y, %sfp - ldr r6, [sp, #8] @ iconX, %sfp + str r3, [sp, #8] @ y, %sfp + ldr r6, [sp, #4] @ iconX, %sfp b .L337 @ .L340: .align 2 @@ -3332,7 +3237,6 @@ GaidenStatScreen: .syntax unified .code 16 .thumb_func - .fpu softvfp .type GaidenRTextGetter, %function GaidenRTextGetter: @ Function supports interworking. @@ -3347,7 +3251,7 @@ GaidenRTextGetter: @ StatScreen.c:39: } @ sp needed @ @ StatScreen.c:36: int index = *(proc->rTextData+0x12); - ldr r3, [r0, #44] @ tmp141, proc_12(D)->rTextData + ldr r3, [r0, #44] @ proc_12(D)->rTextData, proc_12(D)->rTextData ldrb r5, [r3, #18] @ _2, MEM[(char *)_1 + 18B] @ StatScreen.c:37: proc->type = SpellsGetter(gpStatScreenUnit,-1)[index]; // I think if this is positive, it treats this as an item bubble. ldr r3, .L342 @ tmp126, @@ -3383,7 +3287,6 @@ GaidenRTextGetter: .syntax unified .code 16 .thumb_func - .fpu softvfp .type GaidenRTextLooper, %function GaidenRTextLooper: @ Function supports interworking. @@ -3391,7 +3294,7 @@ GaidenRTextLooper: @ frame_needed = 0, uses_anonymous_args = 0 push {r3, r4, r5, r6, r7, lr} @ @ StatScreen.c:43: int index = *(proc->rTextData+0x12); - ldr r3, [r0, #44] @ tmp173, proc_26(D)->rTextData + ldr r3, [r0, #44] @ proc_26(D)->rTextData, proc_26(D)->rTextData ldrb r4, [r3, #18] @ _2, MEM[(char *)_1 + 18B] @ StatScreen.c:44: if ( proc->direction == DIRECTION_RIGHT ) movs r3, r0 @ tmp140, proc @@ -3407,7 +3310,7 @@ GaidenRTextLooper: rsbs r7, r7, #0 @ tmp160, tmp160 .L346: @ StatScreen.c:47: while ( index >= 0 && !DoesUnitKnowSpell(gpStatScreenUnit,SpellsGetter(gpStatScreenUnit,-1)[index]) ) - ldr r3, .L354 @ tmp142, + ldr r3, .L356 @ tmp142, ldr r6, [r3] @ gpStatScreenUnit.123_4, gpStatScreenUnit @ StatScreen.c:47: while ( index >= 0 && !DoesUnitKnowSpell(gpStatScreenUnit,SpellsGetter(gpStatScreenUnit,-1)[index]) ) movs r1, r7 @, tmp160 @@ -3422,7 +3325,7 @@ GaidenRTextLooper: bne .L344 @, @ StatScreen.c:49: RTextUp(proc); movs r0, r5 @, proc - ldr r3, .L354+4 @ tmp141, + ldr r3, .L356+4 @ tmp141, bl .L14 @ @ StatScreen.c:47: while ( index >= 0 && !DoesUnitKnowSpell(gpStatScreenUnit,SpellsGetter(gpStatScreenUnit,-1)[index]) ) subs r4, r4, #2 @ index, index, @@ -3440,7 +3343,7 @@ GaidenRTextLooper: @ StatScreen.c:56: if ( !DoesUnitKnowSpell(gpStatScreenUnit,SpellsGetter(gpStatScreenUnit,-1)[index]) ) movs r1, #1 @, @ StatScreen.c:56: if ( !DoesUnitKnowSpell(gpStatScreenUnit,SpellsGetter(gpStatScreenUnit,-1)[index]) ) - ldr r7, .L354 @ tmp145, + ldr r7, .L356 @ tmp145, ldr r6, [r7] @ gpStatScreenUnit.126_10, gpStatScreenUnit @ StatScreen.c:56: if ( !DoesUnitKnowSpell(gpStatScreenUnit,SpellsGetter(gpStatScreenUnit,-1)[index]) ) rsbs r1, r1, #0 @, @@ -3455,10 +3358,10 @@ GaidenRTextLooper: bne .L344 @, @ StatScreen.c:58: RTextLeft(proc); movs r0, r5 @, proc - ldr r6, .L354+8 @ tmp148, + ldr r6, .L356+8 @ tmp148, bl .L15 @ @ StatScreen.c:60: if ( index % 2 && !DoesUnitKnowSpell(gpStatScreenUnit,SpellsGetter(gpStatScreenUnit,-1)[index-1]) ) { RTextLeft(proc); } - lsls r3, r4, #31 @ tmp172, _2, + lsls r3, r4, #31 @ tmp171, _2, bpl .L344 @, @ StatScreen.c:60: if ( index % 2 && !DoesUnitKnowSpell(gpStatScreenUnit,SpellsGetter(gpStatScreenUnit,-1)[index-1]) ) { RTextLeft(proc); } movs r1, #1 @, @@ -3469,10 +3372,10 @@ GaidenRTextLooper: movs r0, r7 @, gpStatScreenUnit.130_16 bl SpellsGetter @ @ StatScreen.c:60: if ( index % 2 && !DoesUnitKnowSpell(gpStatScreenUnit,SpellsGetter(gpStatScreenUnit,-1)[index-1]) ) { RTextLeft(proc); } - adds r4, r0, r4 @ tmp156, tmp166, _2 - subs r4, r4, #1 @ tmp157, + adds r0, r0, r4 @ tmp156, tmp166, _2 + subs r0, r0, #1 @ tmp157, + ldrb r1, [r0] @ *_19, *_19 movs r0, r7 @, gpStatScreenUnit.130_16 - ldrb r1, [r4] @ *_19, *_19 bl DoesUnitKnowSpell @ @ StatScreen.c:60: if ( index % 2 && !DoesUnitKnowSpell(gpStatScreenUnit,SpellsGetter(gpStatScreenUnit,-1)[index-1]) ) { RTextLeft(proc); } cmp r0, #0 @ tmp167, @@ -3482,21 +3385,23 @@ GaidenRTextLooper: bl .L15 @ @ StatScreen.c:63: } b .L344 @ -.L355: +.L357: .align 2 -.L354: +.L356: .word gpStatScreenUnit .word RTextUp .word RTextLeft .size GaidenRTextLooper, .-GaidenRTextLooper - .ident "GCC: (devkitARM release 55) 10.2.0" + .ident "GCC: (devkitARM release 58) 12.1.0" .code 16 .align 1 .L14: bx r3 .L16: bx r4 -.L270: +.L269: bx r5 .L15: bx r6 +.L327: + bx r7 diff --git a/EngineHacks/ExternalHacks/GaidenMagic/SpellSystem.c b/EngineHacks/ExternalHacks/GaidenMagic/SpellSystem.c index 0bdc6f8010..94e994a755 100644 --- a/EngineHacks/ExternalHacks/GaidenMagic/SpellSystem.c +++ b/EngineHacks/ExternalHacks/GaidenMagic/SpellSystem.c @@ -165,8 +165,7 @@ void SetRoundForSpell(BattleUnit* unit, NewBattleHit* buffer) int cost = GetSpellCost(unit->weapon); // Let's set the HP depletion bit. buffer->attributes |= BATTLE_HIT_ATTR_HPSTEAL; // "HP drain" bit. - // Now let's subtract the cost from their HP. The check before gurantees they have enough HP to cast right now. - unit->unit.curHP -= cost; + // Now let's subtract the cost from the HP change. The check before gurantees they have enough HP to cast right now. buffer->damage -= cost; } else