Code:
477A94 <>MenuScene (2k3: 49D788)
477F24 <>PartyWindow(MainMenu) (2k3: 49DF94)
477F47 = PartyWindow_Width
477F4C = PartyWindow_Height
477F51 = slide open (0|1 = no|yes)
477F53 = y-Pos Default = 0 //set manually: [B1 ..]
477F55 = x-Pos
477F5A mov eax, esi get Ptr on Window
477F5C call sub_493C30 call CreateWindow
477F61 off_49AA9C = InventoryDataPtr
477F68 mov eax,[eax+4] get PartySize
477F6C test Is there anyone in the Party?
477F6E jl jump if there isn't
477F78 xor edi,edi initialize Ptr on PartySlot
477F7A off_49AA9C = InventoryDataPtr
477F81 mov edx,edi get PartySlot
477F83 call sub_47CE60 load BattlerData from PartySlot
477F93 call print(?) HeroName
477F9A = HeroName_Color
477F9C = initialize (0|1 = no|yes)
477F9E = y-Pos-Difference
477FA1 = y-Pos-Correction
477FA4 = x-Pos
477FAD call PrintString(?)
477FB6 call sub_48316C get Hero's Title
477FBF = HeroTitle_Color
477FC1 = initialize (0|1 = no|yes)
477FC3 = y-Pos-Difference
477FC6 = y-Pos-Correction
477FC9 = x-Pos
477FD2 call PrintString(?)
477FD5 off_49ABDC = VocabStringPtr
477FDC mov eax,[eax+100] get VocabString for Lv-Symbol
477FE3 = Lv-Symbol_Color
477FE5 = initialize (0|1 = no|yes)
477FE7 = y-Pos-Difference
477FEA = y-Pos-Correction
477FED = y-Pos (relatively in the PartySlot)
477FF0 = x-Pos
477FF9 call PrintString(?)
478003 mov eax,[eax+FC] get VocabString for Exp-Symbol
47800A = Exp-Symbol_Color
47800C = initialize (0|1 = no|yes)
47800E = y-Pos-Difference
478011 = y-Pos-Correction
478014 = y-Pos (relatively in the PartySlot)
478017 = x-Pos
478020 call PrintString(?)
47802A mov eax,[eax+104] get VocabString for HP-Symbol
478031 = HP-Symbol_Color
478033 = initialize (0|1 = no|yes)
478035 = y-Pos-Difference
478038 = y-Pos-Correction
47803B = y-Pos (relatively in the PartySlot)
47803E = x-Pos
478047 call PrintString(?)
478051 mov eax,[eax+108] get VocabString for MP-Symbol
478058 = MP-Symbol_Color
47805A = initialize (0|1 = no|yes)
47805C = y-Pos-Difference
47805F = y-Pos-Correction
478062 = y-Pos (relatively in the PartySlot)
478065 = x-Pos
47806E call PrintString(?)
478078 call sub_4833D8 get HeroLevel
478097 = Lv_Color
478099 = initialize (0|1 = no|yes)
47809B = y-Pos-Difference
47809E = y-Pos-Correction
4780A1 = y-Pos (relatively in the PartySlot)
4780A4 = x-Pos
4780AD call PrintString(?)
4780B6 call sub_481D6C call GetCondition
4780C2 call sub_481DB8 call GetConditionColor
4780C8 = initialize (0|1 = no|yes)
4780CA = y-Pos-Difference
4780CD = y-Pos-Correction
4780D0 = y-Pos (relatively in the PartySlot)
4780D3 = x-Pos
4780DC call PrintString(?)
4780E2 call sub_4833D8 get HeroLevel
4780E7 mov ebx,eax memorize current Level in EBX
4780EC call sub_4833DC get max.Level //Output into EAX
4780F1 cmp ebx,eax Is the current Level below the max.Level?
4780F3 jl jump if current Level below the max.Level
4780F5 get " ------/------ " in case of max.Level
4780FA = Color ( ------/------ )
4780FC = initialize (0|1 = no|yes)
4780FE = y-Pos-Difference
478101 = y-Pos-Correction
478104 = y-Pos (relatively in the PartySlot)
478107 = x-Pos
478110 call PrintString(?)
478113 jmp jump to show HP
47811C call sub_48341C get Hero_Exp
47812B call sub_483420 get nextLevel_Exp
47814D = Exp_Color (" Exp / nextLevelExp ")
47814F = initialize (0|1 = no|yes)
478151 = y-Pos-Difference
478154 = y-Pos-Correction
478157 = y-Pos (relatively in the PartySlot)
47815A = x-Pos
478163 call PrintString(?)
47816D mov eax,[eax+14] get Hero_HP
47818D call sub_4814E8 call GetHPColor (calculate whether HP are low or not)
478192 set Color
478193 = initialize (0|1 = no|yes)
478195 = y-Pos-Difference
478198 = y-Pos-Correction
47819B = y-Pos (relatively in the PartySlot)
47819E = x-Pos
4781A7 call PrintString(?)
4781B1 mov eax,[eax+18] get Hero_MP
4781D1 call sub_48151C call GetMPColor (calculate whether MP are low or not)
4781D6 set Color
4781D7 = initialize (0|1 = no|yes)
4781D9 = y-Pos-Difference
4781DC = y-Pos-Correction
4781DF = y-Pos (relatively in the PartySlot)
4781E2 = x-Pos
4781EB = initialize (0|1 = no|yes)
4781F7 call get Hero_max.HP
478214 = "/max.HP"_Color
478216 = initialize (0|1 = no|yes)
478218 = y-Pos-Difference
47821B = y-Pos-Correction
47821E = y-Pos (relatively in the PartySlot)
478221 = x-Pos
47822A call PrintString(?)
478236 call get Hero_max.MP
478253 = "/max.MP"_Color
478255 = initialize (0|1 = no|yes)
478257 = y-Pos-Difference
47825A = y-Pos-Correction
47825D = y-Pos (relatively in the PartySlot)
478260 = x-Pos
478269 call PrintString(?)
47826C inc edi Ptr on PartySlot +1
478270 jnz jump if there's still HeroData to be shown
478276 mov [esi+30],40 set Cursor_x-Pos to 64
47827D mov [esi+38],A0 set Cursor_Width to 160
478284 mov [esi+3C],30 set Cursor_Height to 48
47828B mov [esi+28],3A set Cursor_y-Pos-Movement to 58
**CursorData:
04 = ColumnsAmount(?)
14 = Window_x-Pos
18 = Window_y-Pos
1C = Window_Width
20 = Window_Height
28 = Cursor_y-Pos-Movement
2C ?
30 = Cursor_x-Pos
34 = Cursor_y-Pos
38 = Cursor_Width
3C = Cursor_Height
40 = ChoicesAmount
44 = initial Choice
4C ? selected Choice(?)
478299 mov eax,[eax+4] get PartySize
47829C mov [esi+2C],eax memorize PartySize
47829F mov [esi+40],eax memorize PartySize
4782EC 03 set 00 don't show Level
4782F8 0D set 00 don't show ------/------
4782FC " ------/------ "
478310 07 set 00 don't show "Exp / next.Exp"
478317 [2F] = " / " (ASCII character between Exp)
478320 03 set 00 don't show current HP/MP
47832C 04 set 00 don't show max.HP/MP
478330 [2F] = " / " (ASCII character between current and max.HP or MP)
478338 <>FaceGraphics(MainMenu) (2k3: 49E388)
47833E mov esi,eax memorize Ptr on PartyWindow
478340 mov eax,esi get Ptr on PartyWindow
478342 call sub_49444C draw PartyWindow
478347 mov eax,esi get Ptr on PartyWindow
478349 call sub_493E80 call IsWindowOpen
47834E test al,al Has the Window fully slid open?
478350 jz jump to function's end if not
478352 off_49AA9C = InventoryDataPtr
478359 mov edi,[eax+4] memorize PartySize
47835D test edi,edi Is there anyone in the Party?
47835F jl jump to function's end if the Party is empty
478362 xor ebx,ebx initialize PartySlotPtr
__________DrawFacesLoop__________
478364 -> off_49AA9C = InventoryDataPtr
49E3C0 | mov edx,ebx get PartySlot
49E3C2 | c.sub_4A6014 call GetBattlerData(Hero)
49E3C7 | cmp [eax+74],0 Is the Hero's Row = Front?
49E3CB << jnz loc_49E3D1 jump if Row = Back
49E3CD | xor ebp,ebp reset RowCorrection(x-Pos)
49E3CF < jmp loc_49E3D6
49E3D1 >> mov ebp,8 set RowCorrection(x-Pos)
49E3D6 > off_4CDB74 = InventoryDataPtr
47836B | mov edx,ebx get PartySlot
47836D | c.sub_47CE58 get assigned FaceGraphic
478372 | push eax memorize FilePtr on the FaceGraphic
47837A | mov edx,ebx get PartySlot
47837C | c.sub_47CE58 get assigned FaceGraphic
478381 | lea edx,[esp+4] get memorized FilePtr on the FaceGraphic
478385 | c.sub_451C0C load FaceGraphic(?)
47838F | mov ecx,[esi+18] get PartyWindow's y-Pos
478392 | add ecx, 8 increase y-Pos of all FaceGraphics
478395 | imul y-Pos-Difference between FaceGraphics = 58 pixel (3A)
478398 | add ecx,eax apply y-Pos-Difference
47839A | mov edx,[esi+14] get PartyWindow's x-Pos
47839D | add edx, 8 increase x-Pos of all FaceGraphics
49E412 | mov edx,ebp apply RowCorrection(x-Pos)
4783A0 | off_49AA48 = ScreenPtr
4783AA | c.sub_4527D0 draw FaceGraphic(?)
4783AF | inc ebx PartySlot +1
4783B0 | dec edi PartySize -1
4783B1 --jnz jump to process each Hero in the Party
_________________________________
4783BC <>?? (2k3: 49E430)
478410 <>?? (2k3: 49E484)
478448 <>ItemSkillUseScene (2k3: 49E4BC)
47844B = NameWindow_Width
478450 = NameWindow_Height
478452 = hide (0|1 = no|yes)
478454 = y-Pos default = 0 //set manually: [B1 ..]
478456 = x-Pos default = 0 //set manually: [BA .. .. .. ..] needed
478458 mov eax,[ebx+64] get Ptr on NameWindow
47845B call sub_493C30 call CreateWindow
478460 = OwnedCostWindow_Width
478465 = OwnedCostWindow_Height
478467 = hide (0|1 = no|yes)
478469 = y-Pos [B1 ..] saves 3 bytes (usable for x-Pos)
47846E = x-Pos default = 0 //set manually: [BA .. .. .. ..] needed
478470 mov eax,[ebx+68] get Ptr on OwnedCostWindow
478473 call sub_493C30 call CreateWindow
478478 = PartyWindow_Width
47847D = PartyWindow_Height
478482 = slide open (0|1 = no|yes)
478484 = y-Pos default = 0 //set manually: [B1 ..]
478486 = x-Pos
47848D call sub_493C30 call CreateWindow
478492 mov [ebx+30],40 set Cursor_x-Pos to 64
478499 mov [ebx+38],70 set Cursor_Width to 112
4784A0 mov [ebx+3C],30 set Cursor_Height to 48
4784A7 mov [ebx+28],3A set Cursor_y-Pos-Movement to 58
4784AE off_49AA9C = InventoryDataPtr
4784B5 mov eax,[eax+4] get PartySize into EAX
4784C0 <>PartyWindow(ItemSkillUse) (2k3: 49E534)
4784D3 mov memorize Ptr on Window
4784E4 mov get Ptr on Window
4784E7 call sub_493D80 call RefreshWindow (clear Window's contents)
4784EC off_49AA9C = InventoryDataPtr
4784F3 mov eax,[eax+4] get PartySize
47850C mov edx,ebx get PartySlot
47850E call sub_47CE60 load HeroData from PartySlot
478523 = HeroName_Color
478525 = show* (0|1 = no|yes) *until updated by Cursor
478527 = y-Pos-Difference
47852A = y-Pos-Correction
47852D = x-Pos
478532 mov get Ptr on Window
478537 call PrintString(?)
47853A off_49ABDC = VocabStringPtr
478541 mov eax,[eax+100] get VocabString for Lv-Symbol
478548 = Lv-Symbol_Color
47854A = show* (0|1 = no|yes) *until updated by Cursor
47854C = y-Pos-Difference
47854F = y-Pos-Correction
478552 = y-Pos (relatively in the PartySlot)
478555 = x-Pos
47855A mov get Ptr on Window
47855F call PrintString(?)
478569 mov eax,[eax+104] get VocabString for HP-Symbol
478570 = HP-Symbol_Color
478572 = show* (0|1 = no|yes) *until updated by Cursor
478574 = y-Pos-Difference
478577 = y-Pos-Correction
47857A = y-Pos (relatively in the PartySlot)
47857D = x-Pos
478582 mov get Ptr on Window
478587 call PrintString(?)
478591 mov eax,[eax+108] get VocabString for MP-Symbol
478598 = MP-Symbol_Color
47859A = show* (0|1 = no|yes) *until updated by Cursor
47859C = y-Pos-Difference
47859F = y-Pos-Correction
4785A2 = y-Pos (relatively in the PartySlot)
4785A5 = x-Pos
4785AA mov get Ptr on Window
4785AF call PrintString(?)
4785B8 call sub_4833D8 get HeroLevel
4785CE call sub_408AD0 ??
4785D7 = Lv-Number_Color
4785D9 = show* (0|1 = no|yes) *until updated by Cursor
4785DB = y-Pos-Difference
4785DE = y-Pos-Correction
4785E1 = y-Pos (relatively in the PartySlot)
4785E4 = x-Pos
4785E9 mov get Ptr on Window
4785EE call PrintString(?)
4785F6 call sub_481D6C call GetCondition
478601 call sub_481DB8 call GetConditionColor
478607 = show* (0|1 = no|yes) *until updated by Cursor
478609 = y-Pos-Difference
47860C = y-Pos-Correction
47860F = y-Pos (relatively in the PartySlot)
478612 = x-Pos
47861C call PrintString(?)
478623 mov eax,[esi+14] get HP
478638 call sub_408AD0 ??
478642 call sub_4814E8 call GetHPColor (calculate whether HP are low or not)
478647 set Color
478648 = initialize* (0|1 = no|yes) *updated by Cursor
47864A = y-Pos-Difference
47864D = y-Pos-Correction
478650 = y-Pos (relatively in the PartySlot)
478653 = x-Pos
478658 mov get Ptr on Window
47865D call PrintString(?)
478664 mov eax,[esi+18] get MP
478678 call sub_408AD0 ??
478683 call sub_48151C call GetMPColor (calculate whether MP are low or not)
478688 set Color
478689 = show* (0|1 = no|yes) *until updated by Cursor
47868B = y-Pos-Difference
47868E = y-Pos-Correction
478691 = y-Pos (relatively in the PartySlot)
478694 = x-Pos
478699 mov get Ptr on Window
47869E call PrintString(?)
4786A9 call get max.HP
4786BD call sub_408AD0 ??
4786C6 = "/max.HP"_Color
4786C8 = show* (0|1 = no|yes) *until updated by Cursor
4786CA = y-Pos-Difference
4786CD = y-Pos-Correction
4786D0 = y-Pos (relatively in the PartySlot)
4786D3 = x-Pos
4786D8 mov get Ptr on Window
4786DD call PrintString(?)
4786E8 call get max.MP
4786FC call sub_408AD0 ??
478705 = "/max.MP"_Color
478707 = show* (0|1 = no|yes) *until updated by Cursor
478709 = y-Pos-Difference
47870C = y-Pos-Correction
47870F = y-Pos (relatively in the PartySlot)
478712 = x-Pos
478717 mov get Ptr on Window
47871C call print all Strings(?)
47871F inc ebx next PartySlot
478720 dec [ebp-8] decrease PartySlots left to show(?)
478723 jnz jump to show strings and numbers of the next Hero
478764 03 set 00 hide Lv
478770 03 set 00 hide HP/MP
47877C 04 set 00 hide max.HP/MP
478780 [2F] = " / " (ASCII character between HP/MP and max.HP/MP)
478788 <>?? (2k3:49E808)
4787A4 <>DrawItemSkillUseWindows (2k3: 49E824)
4787AA mov ebx,eax memorize Ptr on PartyWindow
4787AC mov eax,[ebx+64] get Ptr on NameWindow
4787B1 call draw Window
4787B4 mov eax,[ebx+68] get Ptr on OwnedCostWindow
4787B9 call draw Window
4787BC mov eax,ebx get MenuParamPtr
4787BE call sub_49444C draw PartyWindow(?)
4787C3 mov eax,ebx get MenuParamPtr
4787C5 call sub_493E80 call IsWindowOpen
4787CA test al,al Has the Window fully slid open?
4787CC jz jump to function's end if not
4787D5 mov edi,[eax+4] memorize PartySize
4787D9 test edi,edi Is there someone in the Party?
4787DB jl jump if there isn't
4787DE xor esi,esi initialize PartySlotPtr
__________DrawFacesLoop__________
4787E0 -> off_49AA9C = InventoryDataPtr
4787E7 | mov edx,esi get PartySlot
4787E9 | c.sub_47CE58 get assigned FaceGraphic
4787EE | push eax memorize FilePtr on FaceGraphic
4787F6 | mov edx,esi get PartySlot
4787F8 | c.sub_47CE58 get assigned FaceGraphic
4787FD | lea edx,[esp+4] get memorized FilePtr on FaceGraphic
478801 | c.sub_451C0C load FaceGraphic(?)
47880B | mov ecx,[ebx+18] get PartyWindow's y-Pos
47880E | add ecx,8 increase y-Pos of all FaceGraphics (y-Pos-Correction)
478811 | imul y-Pos-Difference between FaceGraphics = 58 pixel (3A)
478814 | add ecx,eax apply y-Pos-Correction
478816 | mov edx,[ebx+14] get PartyWindow's x-Pos
478819 | add edx,8 x-Pos-Correction
47881C | off_49AA48 = ScreenPtr
478826 | c.sub_4527D0 draw FaceGraphic(?)
47882B | inc esi PartySlot +1
47882C | dec edi PartySize -1
47882D --jnz jump to process each Hero in the Party
_________________________________
478838 <>TeleportSubScene (2k3: 49E8B8)
47883B mov [ebx+4],2 set to 2 columns of TeleportChoices
478842 = TeleportWindow_Width
478847 = TeleportWindow_Height
478849 = slide open (0|1 = no|yes)
47884B = y-Pos
478850 = x-Pos default = 0 //set manually: [B2 ..]
478854 call sub_493C30 call CreateWindow
478859 off_49AA74 = TeleportLocationPtr
478860 call sub_45A8E4 get amount(+1) of available Maps to teleport to
478865 dec eax get amount of available Maps to teleport to into EAX
478866 mov [ebx+40],eax set ChoicesAmount
478869 mov dl,1 ShowCursor = true
47886D call sub_4946DC call CreateCursor
478876 call print TeleportChoices(?)
47887C <>TeleportEntries (2k3: 49E8FC)
478883 mov [ebp-4],ecx get y-Pos of the TeleportChoice
478886 mov edi,edx get x-Pos of the TeleportChoice (by Column-Pos)
478888 mov ebx,eax memorize Ptr on TeleportWindow
47888D inc edx Map_ID +1(?)
47888E off_49AA74 = TeleportLocationPtr
478895 call sub_47C9AC get TeleportLocation
47889A mov esi,[eax+C] get Map_ID
47889D off_49AC18 = MapTreeDataPtr
4788A4 mov edx,esi get Map_ID
4788A6 call sub_467694 call GetMapPropertyParam
4788AB mov eax,[eax+8] get MapName
4788AF = MapName_Color
4788B3 = y-Pos
4788B6 = x-Pos
4788B8 mov eax,ebx get Ptr on TeleportWindow
4788BC call PrintString(?)
4788C8 <>CreateEquipStatWindow (2k3: 49E948)
4788CE = width
4788D0 = Height
4788D2 = hide (0|1 = no|yes)
4788D4 = y-Pos [B1 ..] -> saves 3 Bytes
4788D9 = x-Pos default = 0 //set manually: [BA .. .. .. ..] needed
4788DD call sub_493C30 call CreateWindow
4788EC <>CompareStats (2k3: 49E96C)
4788EC xor ecx,ecx set Default_Color (ID 0)
4788EE cmp edx,eax Is current EquipStat smaller than the new EquipStat?
4788F0 jge jump if greater/equal (= new EquipStat may be worse)
4788F2 = Color (Upgrade)
4788F7 cmp edx,eax Is current EquipStat bigger than the new EquipStat?
4788F9 jle jump if smaller/equal (= new EquipStat doesn't change)
4788FB = Color (Downgrade)
478900 mov eax,ecx set Color_ID
478904 <>StatChange (2k3: 49E984)
47892F = StringEraser_Height (clear StatChange onCancel)
478935 = StringEraser_Width
47893A = WindowBackground_y-Pos (a piece of the window(?))
47893F = WindowBackground_x-Pos
478944 call sub_40ECD0 ??
47894D = StringEraser_y-Pos
478952 = StringEraser_x-Pos
47895A call sub_452294 ??
47895F = StringEraser_Height (clear StatChange onMove/Decision)
478965 = StringEraser_Width
47896A = StringEraser_y-Pos
47896F = StringEraser_x-Pos
478974 call sub_40ECD0 ??
47897C xor ecx,ecx set Background_Coloration (default 0 = transparent)
478981 call sub_4521D0 ClearStrings(?)
478989 cmp Is the Cursor in the EquipPoolWindow? (= print StatChange)
47898D jz jump if not in the EquipPoolWindow
478993 mov edx,[eax+64] get Hero_ID
478996 off_49ACE8 = ActorDataPtr
47899D call sub_482A78 call GetActor
4789A6 call sub_481748 get Hero_Str
4789AE call sub_4788EC call CompareStats
4789B3 mov edi,eax get Color_ID into EDI
4789BB call sub_481748 get Hero_Str
4789DA = Str-Change_Color (stored in EDI)
4789DD = Str-Change_y-Pos
4789E2 = Str-Change_x-Pos
4789EB call PrintString(?)
4789F0 call sub_4817B8 get Hero_Def
4789F8 call sub_4788EC call CompareStats
4789FD mov edi,eax get Color_ID into EDI
478A05 call sub_4817B8 get Hero_Def
478A24 = Def-Change_Color (stored in EDI)
478A27 = Def-Change_y-Pos
478A2C = Def-Change_x-Pos
478A35 call PrintString(?)
478A3A call sub_481828 get Hero_Int
478A42 call sub_4788EC call CompareStats
478A47 mov edi,eax get Color_ID into EDI
478A4F call sub_481828 get Hero_Int
478A6E = Int-Change_Color (stored in EDI)
478A71 = Int-Change_y-Pos
478A76 = Int-Change_x-Pos
478A7F call PrintString(?)
478A84 call sub_481898 get Hero_Agi
478A8C call sub_4788EC call CompareStats
478A91 mov edi,eax get Color_ID into EDI
478A99 call sub_481898 get Hero_Agi
478AB8 = Agi-Change_Color (stored in EDI)
478ABB = Agi-Change_y-Pos
478AC0 = Agi-Change_x-Pos
478AC9 call print all Strings(?)
478B04 03 set 00 don't show any StatChanges
478B0C <>StatsWindow (2k3: 49EB94)
478B2C call sub_493D80 call RefreshWindow (clear Window's contents)
478B34 mov edx,[eax+64] get Hero_ID
478B37 off_49ACE8 = ActorDataPtr
478B3E call sub_482A78 call GetActor
478B43 call sub_481748 get Hero_Str
478B48 mov [ebx+68],eax memorize Hero_Str
478B4E mov edx,[eax+64] get Hero_ID
478B58 call sub_482A78 call GetActor
478B5D call sub_4817B8 get Hero_Def
478B62 mov [ebx+6C],eax memorize Hero_Def
478B68 mov edx,[eax+64] get Hero_ID
478B72 call sub_482A78 call GetActor
478B77 call sub_481828 get Hero_Int
478B7C mov [ebx+70],eax memorize Hero_Int
478B82 mov edx,[eax+64] get Hero_ID
478B8C call sub_482A78 call GetActor
478B91 call sub_481898 get Hero_Agi
478B96 mov [ebx+74],eax memorize Hero_Agi
478B9C mov edx,[eax+64] get Hero_ID
478BA6 call sub_482A78 call GetActor
478BB0 call print(?) HeroName
478BB7 = HeroName_Color
478BB9 = show (0|1 = no|yes)
478BBB = y-Pos
478BC0 = x-Pos
478BC9 call PrintString(?)
478BCC off_49ABDC = VocabStringPtr
478BD3 mov eax,[eax+110] get VocabString for Str
478BDA = StrVocab_Color
478BDC = show (0|1 = no|yes)
478BDE = y-Pos
478BE3 = x-Pos
478BEC call PrintString(?)
478BF6 mov eax,[eax+114] get VocabString for Def
478BFD = DefVocab_Color
478BFF = show (0|1 = no|yes)
478C01 = y-Pos
478C06 = x-Pos
478C0F call PrintString(?)
478C19 mov eax,[eax+118] get VocabString for Int
478C20 = IntVocab_Color
478C22 = show (0|1 = no|yes)
478C24 = y-Pos
478C29 = x-Pos
478C32 call PrintString(?)
478C3C mov eax,[eax+11C] get VocabString for Agi
478C43 = AgiVocab_Color
478C45 = show (0|1 = no|yes)
478C47 = y-Pos
478C4C = x-Pos
478C55 call PrintString(?)
478C5C mov eax,[ebx+68] get Hero_Str
478C6B load(?) Hero_Str
478C70 call sub_408AD0 ??
478C79 = Str_Color
478C7B = show (0|1 = no|yes)
478C7D = y-Pos
478C82 = x-Pos
478C8B call PrintString(?)
478C92 mov eax,[ebx+6C] get Hero_Def
478CA1 load(?) Hero_Def
478CAF = Def_Color
478CB1 = show (0|1 = no|yes)
478CB3 = y-Pos
478CB8 = x-Pos
478CC1 call PrintString(?)
478CC8 mov eax,[ebx+70] get Hero_Int
478CD7 load(?) Hero_Int
478CE5 = Int_Color
478CE7 = show (0|1 = no|yes)
478CE9 = y-Pos
478CEE = x-Pos
478CF7 call PrintString(?)
478CFE mov eax,[ebx+74] get Hero_Agi
478D0D load(?) Hero_Agi
478D1B = Agi_Color
478D1D = show (0|1 = no|yes)
478D1F = y-Pos
478D24 = x-Pos
478D2D call PrintString(?)
478D30 get " -> "Arrow (behind Str)
478D35 = Arrow_Color
478D37 = show (0|1 = no|yes)
478D39 = y-Pos
478D3E = x-Pos
478D47 call PrintString(?)
478D4A get " -> "Arrow (behind Def)
478D4F = Arrow_Color
478D51 = show (0|1 = no|yes)
478D53 = y-Pos
478D58 = x-Pos
478D61 call PrintString(?)
478D64 get " -> "Arrow (behind Int)
478D69 = Arrow_Color
478D6B = show (0|1 = no|yes)
478D6D = y-Pos
478D72 = x-Pos
478D7B call PrintString(?)
478D7E get " -> "Arrow (behind Agi)
478D83 = Arrow_Color
478D85 = show (0|1 = no|yes)
478D87 = y-Pos
478D8C = x-Pos
478D95 call PrintString(?)
478D9A call sub_478904 call StatChange
4781D8 03 set 00 don't show any Stat
4781E4 02 set 00 don't show any Arrow
4781E8 [2D 3E] = " -> "
478DEC <>CreateEquipWindow (2k3: 49EE88)
478DF2 = width
478DF7 = Height less height = less EquipSlots available
478DF8 = slide open (0|1 = no|yes)
478DFB = y-Pos
478E00 = x-Pos
478E07 call sub_493C30 call CreateWindow
478E18 <>EquipWindow (2k3: 49EEB4)
478E24 off_49ABDC = VocabStringPtr
478E2B mov eax,[eax+120] get VocabString for Weapon (EquipSlot#1)
478E32 = EquipSlot#1_Color
478E34 = initialize (0|1 = no|yes) //updated by Cursor
478E36 = y-Pos
478E3B = x-Pos
478E44 call PrintString(?)
478E4A mov edx,[eax+64] get Hero_ID
478E54 call sub_482A78 call GetActor
478E59 call sub_484498 get TwoWeaponStyle_flag
478E5E test Is TwoWeaponStyle_flag = true?
478E60 jz jump if false
478E69 mov eax,[eax+120] get VocabString for Weapon (EquipSlot#2)
478E70 = EquipSlot#2_Color
478E72 = initialize (0|1 = no|yes)
478E74 = y-Pos
478E79 = x-Pos
478E82 call PrintString(?)
478E85 jmp jump to EquipSlot#3
478E8E mov eax,[eax+124] get VocabString for Shield (EquipSlot#2)
478E95 = EquipSlot#2_Color
478E97 = initialize (0|1 = no|yes)
478E99 = y-Pos
478E9E = x-pos
478EA7 call PrintString(?)
478EB1 mov eax,[eax+128] get VocabString for Armor (EquipSlot#3)
478EB8 = EquipSlot#3_Color
478EBA = initialize (0|1 = no|yes)
478EBC = y-Pos
478EC1 = x-pos
478ECA call PrintString(?)
478ED4 mov eax,[eax+12C] get VocabString for Helmet (EquipSlot#4)
478EDB = EquipSlot#4_Color
478EDD = initialize (0|1 = no|yes)
478EDF = y-Pos
478EE4 = x-Pos
478EED call PrintString(?)
478EF7 mov eax,[eax+130] get VocabString for Other (EquipSlot#5)
478EFE = EquipSlot#5_Color
478F00 = initialize (0|1 = no|yes)
478F02 = y-Pos
478F07 = x-Pos
478F10 call PrintString(?)
478F13 xor ebx,ebx initialize EquipSlotPtr
__________EquippedItemsLoop__________
478F15 --> ??
478F18 | mov edx,[eax+64] get Hero_ID
478F22 | c.sub_482A78 call GetActor
478F27 | mov edx,ebx EDX = Ptr on EquipSlot (0=Slot#1 | 1=Slot#2 | ...)
478F29 | c.sub_483870 call GetEquippedItem
478F2E | mov edi,eax memorize equipped Item_ID
478F30 | test Is there Equipment in the EquipSlot?
478F32 | jle jump if the EquipSlot is empty
478F34 | off_49AA34 = ItemParamPtr
478F3B | mov edx,edi get Item_ID
478F3D | c.sub_4631D0 call GetItemParam
478F42 | mov eax,[eax+8] get Item_Name
478F46 | set Item_Color
478F48 | initialize
478F4A | mov ecx,ebx get EquipSlotPtr
478F4C | shl ecx,4 y-Pos-Difference
478F4F | add ecx,8 y-Pos-Correction
478F52 | x-Pos
478F57 | mov eax,esi get Ptr on Window
478F5B | call PrintString(?)
478F5E | inc ebx EquipSlot +1
478F5F | cmp ebx,5 Were all 5 EquipSlots checked?
478F62 --jnz
_____________________________________
**ItemData:
04 = Item_ID
08 = Item_Name
0C = Explanation (0 if non-existent)
10 = Item_Type (0 = CommonItem | 1 = Weapon | 2 = Shield | ...)
14 = Item_Price
18 = No. of uses (0 = infinite)
1C = Atk
20 = Def
24 = Int
28 = Agi
2C = hands used (0|1 = one|two)
30 = MP Cost
34 = Hit%
38 = Crit%
3C = BattleAnimation_ID
40 = Weapon Options (flags can be combined)
.. .. .. 01 = 1st Attack
.. .. 01 .. = 2x Attack
.. 01 .. .. = Attack All
01 .. .. .. = Ignore Evasion
44 = Armor Options (flags can be combined)
.. .. .. 01 = Prevent Crit
.. .. 01 .. = Increase Evasion
.. 01 .. .. = 1/2 MP Cost
01 .. .. .. = No Terrain DMG
48 = Target Range (0|1 = Ally|Party)
4C = HP Recovery(%)
50 = HP Recovery(Units)
54 = MP Recovery(%)
58 = MP Recovery(Units)
5C = Usability Options (flags can be combined)
.. .. .. 01 = use in menu only
.. .. 01 .. = use on dead heroes only
60 = HP+
64 = MP+
68 = Str+
6C = Def+
70 = Int+
74 = Agi+
78 = SkillScroll's Message (0|1 = ItemName|Skill)
7C = SkillBook's / SkillScroll's (2k3: invoked) Skill_ID
80 = Switch_ID
84 = Usability (flags can be combined)
.. .. .. 01 = on field
.. .. 01 .. = in battle
88 = HeroAmount(?)
8C ?
90 = highest checked/cured Condition_ID
94 = Ptr on Condition_Array
98 = highest checked Attribute_ID
9C = Ptr on Attribute_Array
A0 = Condition Hit%
A4 ?
A8 ?
(2k3)
AC = InvokeSkill_flag
B0 ?
B4 ? Ptr on ???
B8 = ItemCursed_flag
BC = ConditionInfliction_flag
49F004 <>Status-HP/MP/Exp-Window
49F031 = width
49F036 = height
49F038 = hide (0|1 = no|yes)
49F03A = y-Pos Default = 0 //set manually: [B1 ..]
49F03C = x-Pos
49F041 get Ptr on Window
49F043 call sub_4C63DC call CreateWindow
49F04A call sub_4C6640 ??
49F04F off_4CDCB4 = VocabStringPtr
49F056 mov eax,[eax+E8] get VocabString for HP-Symbol
49F05D = HP-Symbol_Color
49F05F = show (0|1 = no|yes)
49F061 = y-Pos
49F066 = x-Pos
49F06F call PrintString(?)
49F079 mov eax,[eax+EC] get VocabString for MP-Symbol
49F080 = MP-Symbol_Color
49F082 = show (0|1 = no|yes)
49F084 = y-Pos
49F089 = x-Pos
49F092 call PrintString(?)
49F09C mov eax,[eax+F4] get VocabString for Exp-Symbol
49F0A3 = Exp-Symbol_Color
49F0A5 = show (0|1 = no|yes)
49F0A7 = y-Pos
49F0AC = x-Pos
49F0B5 call PrintString(?)
49F0BB mov edx,[eax+78] get Hero_ID
49F0BE off_4CDDC8 = ActorDataPtr
49F0C5 call sub_4B4870 call GetActor
49F0D0 mov eax,[edi+14] get Hero_HP
49F0E4 call sub_409924 ??
49F0EF call sub_4BF7B0 call GetHPColor (calculate whether HP are low or not)
49F0F5 = show (0|1 = no|yes)
49F0F7 = y-Pos
49F0FC = x-Pos
49F105 call PrintString(?)
49F10C mov eax,[edi+18] get Hero_MP
49F12B call sub_4BF7E4 call GetMPColor (calculate whether MP are low or not)
49F131 = show (0|1 = no|yes)
49F133 = y-Pos
49F138 = x-Pos
49F141 call PrintString(?)
49F14C call get max.HP
49F169 = "/max.HP"_Color
49F16B = show (0|1 = no|yes)
49F16D = y-Pos
49F172 = x-Pos
49F17B call PrintString(?)
49F186 call /get max.MP
49F1A3 = "/max.MP"_Color
49F1A5 = show (0|1 = no|yes)
49F1A7 = y-Pos
49F1AC = x-Pos
49F1B5 call PrintString(?)
49F1BA call sub_4B7070 get HeroLevel
49F1BF mov ebx,eax memorize current Level
49F1C3 call sub_4B7078 get max.Level
49F1C8 cmp ebx,eax Is the current Level below the max.Level?
49F1CA jl jump if current Level below the max.Level
49F1CC get " -------/------- " in case of max.Level
49F1D1 = Color ( -------/------- )
49F1D3 = show (0|1 = no|yes)
49F1D5 = y-Pos
49F1DA = x-Pos
49F1E3 call PrintString(?)
49F1EC mov eax,edi set Hero_ID(?)
49F1EE call sub_4B70B8 get Hero_Exp
49F1FC call sub_4B70C0 get nextLevel_Exp
49F21E = Exp_Color (" Exp / nextLevelExp ")
49F220 = show (0|1 = no|yes)
49F222 = y-Pos
49F227 = x-Pos
49F230 call PrintString(?)
49F268 03 set 00 don't show current HP/MP
49F274 04 set 00 don't show max.HP/MP
49F278 [2F] = " / " (ASCII character between HP/MP and max.HP/MP)
49F284 0F set 00 don't show -------/-------
49F288+ " ------/------ "
49F29C 07 set 00 don't show "Exp / next.Exp"
49F2A3 [2F] = " / " (ASCII character between Exp)
49F2A8 <>StatusStatWindow
49F2C8 = width
49F2CD = height
49F2CF = hide (0|1 = no|yes)
49F2D1 = y-Pos
49F2D6 = x-Pos
49F2DB mov eax,esi get Ptr on Window
49F2DD call sub_4C63DC call CreateWindow
49F2E4 call sub_4C6640 ??
49F2E9 off_4CDCB4 = VocabStringPtr
49F2F0 mov eax,[eax+108] get VocabString for Str
49F2F7 = StrVocab_Color
49F2F9 = show (0|1 = no|yes)
49F2FB = y-Pos
49F300 = x-Pos
49F309 call PrintString(?)
49F313 mov eax,[eax+10C] get VocabString for Def
49F31A = DefVocab_Color
49F31C = show (0|1 = no|yes)
49F31E = y-Pos
49F323 = x-Pos
49F32C call PrintString(?)
49F336 mov eax,[eax+110] get VocabString for Int
49F33D = IntVocab_Color
49F33F = show (0|1 = no|yes)
49F341 = y-Pos
49F346 = x-Pos
49F34F call PrintString(?)
49F359 mov eax,[eax+114] get VocabString for Agi
49F360 = AgiVocab_Color
49F362 = show (0|1 = no|yes)
49F364 = y-Pos
49F369 = x-Pos
49F372 call PrintString(?)
49F37C mov edx,[eax+78] get Hero_ID
49F37F off_4CDDC8 = ActorDataPtr
49F386 call sub_4B4870 call GetActor
49F38B call sub_4BFB28 get Hero_Str
49F3AA = Str_Color
49F3AC = show (0|1 = no|yes)
49F3AE = y-Pos
49F3B3 = x-Pos
49F3BC call PrintString(?)
49F3C6 mov edx,[eax+78] get Hero_ID
49F3D0 call sub_4B4870 call GetActor
49F3D5 call sub_4BFBF4 get Hero_Def
49F3F4 = Def_Color
49F3F6 = show (0|1 = no|yes)
49F3F8 = y-Pos
49F3FD = x-Pos
49F406 call PrintString(?)
49F410 mov edx,[eax+78] get Hero_ID
49F41A call sub_4B4870 call GetActor
49F41F call sub_4BFCC0 get Hero_Int
49F43E = Int_Color
49F440 = show (0|1 = no|yes)
49F442 = y-Pos
49F447 = x-Pos
49F450 call PrintString(?)
49F45A mov edx,[eax+78] get Hero_ID
49F464 call sub_4B4870 call GetActor
49F469 call sub_4BFD5C get Hero_Agi
49F488 = Agi_Color
49F48A = show (0|1 = no|yes)
49F48C = y-Pos
49F491 = x-Pos
49F49A call PrintString(?)
49F4DC <>StatusEquipWindow
49F4E4 = width
49F4E9 = height
49F4EB = hide (0|1 = no|yes)
49F4ED = y-Pos
49F4F2 = x-Pos
49F4F9 call sub_4C63DC call CreateWindow
49F500 call sub_4C6640 ??
49F505 off_4CDCB4 = VocabStringPtr
49F50C mov eax,[eax+118] get VocabString for Weapon (EquipSlot#1)
49F513 = EquipSlot#1_Color
49F515 = show (0|1 = no|yes)
49F517 = y-Pos
49F51C = x-Pos
49F525 call PrintString(?)
49F52B mov edx,[eax+78] get Hero_ID
49F535 call sub_4B4870 call GetActor
49F53A cmp [eax+126],0 Is TwoWeaponStyle_flag = false?
49F541 jz jump if false
49F54A mov eax,[eax+118] get VocabString for Weapon (EquipSlot#2)
49F551 = EquipSlot#2_Color
49F553 = show (0|1 = no|yes)
49F555 = y-Pos
49F55A = x-Pos
49F563 call PrintString(?)
49F566 jmp jump to show EquipSlot#3
49F56F mov eax,[eax+11C] get VocabString for Shield (EquipSlot#2)
49F576 = EquipSlot#2_Color
49F578 = show (0|1 = no|yes)
49F57A = y-Pos
49F57F = x-Pos
49F588 call PrintString(?)
49F592 mov eax,[eax+120] get VocabString for Armor (EquipSlot#3)
49F599 = EquipSlot#3_Color
49F59B = show (0|1 = no|yes)
49F59D = y-Pos
49F5A2 = x-Pos
49F5AB call PrintString(?)
49F5B5 mov eax,[eax+124] get VocabString for Helmet (EquipSlot#4)
49F5BC = EquipSlot#4_Color
49F5BE = show (0|1 = no|yes)
49F5C0 = y-Pos
49F5C5 = x-Pos
49F5CE call PrintString(?)
49F5D8 mov eax,[eax+128] get VocabString for Other (EquipSlot#5)
49F5DF = EquipSlot#5_Color
49F5E1 = show (0|1 = no|yes)
49F5E3 = y-Pos
49F5E8 = x-Pos
49F5F1 call PrintString(?)
49F5F4 xor ebx,ebx set EBX to 0 //initialize Ptr on EquipmentSlot
__________GetEquipmentLoop__________
49F5F6 ->
49F5F9 | get Hero_ID
49F603 | c.sub_4B4870 call GetActor
49F60A | c.sub_4B79BC call GetEquippedItem
49F611 | test Is an Item equipped?
49F613 | jle jump if there isn't
49F615 | off_4CDB14 = ItemDataPtr
49F61E | c.sub_47E8E8 call GetItemParam
49F623 | mov eax,[eax+8] get Item_Name
49F627 | Color (all EquipmentNames)
49F629 | show (0|1 = no|yes)
49F62B | mov ecx,ebx get SlotPtr
49F62D | calculate y-Pos
49F630 | y-Pos-Correction
49F633 | x-Pos
49F63C | call PrintString(?)
49F63F | inc ebx SlotPtr +1
49F640 | cmp ebx,5 Is the SlotPtr at 5?
49F643 -- jnz jump if EBX is not 5 yet
____________________________________
478F68 <>?? (2k3: 49F64C)
478FCC <>?? (2k3: 49F6B4)
49F6F8 <>StatusMenuSubScene
49F700 mov eax,[esi+7C] get Ptr on HP/MP/Exp-Window
49F703 call sub_49F004 draw Status-HP/MP/Exp-Window
49F70A mov eax,[esi+80] get Ptr on StatWindow
49F710 call sub_49F2A8 draw StatWindow
49F717 mov eax,[esi+84] get Ptr on EquipWindow
49F71D call sub_49F4DC draw EquipWindow
49F722 = HeroInfoWindow_Width
49F724 = HeroInfoWindow_Height
49F729 = slide open (0|1 = no|yes)
49F72B = y-Pos Default = 0 //set manually: [B1 ..]
49F72D = x-Pos Default = 0 //set manually: [B2 ..]
49F72F mov eax, esi get Ptr on Window
49F731 call sub_4C63DC call CreateWindow
49F740 <>??
49F76C <>StatusMenuNavigation
49F775 call sub_4C6BEC get pressed Keys
49F77A off_4CDAEC = KeyPtr
49F781 test Was [right] pressed?
49F788 jnz jump if [right] was pressed
49F791 test Was [left] pressed?
49F798 jz jump if nothing was pressed
49F79E off_4CDB74 = InventoryDataPtr
49F7A5 mov eax,[eax+4] get PartySize
49F7A8 cmp eax, 1 Is the PartySize bigger than 1?
49F7AB jle jump if 1 //disallows switching Heroes
49F7C0 call sub_48B844 get CursorSound
49F7CE call sub_48B538 call PlaySound
49F7DA test Was [right] pressed?
49F7E1 setnz set AL to 0 if [left] was pressed
49F7E4 [esp],al store AL (indicator for previous/next PartySlot)
49F7EE off_4CDC60 = MenuParamPtr
49F7F5 call sub_48CE04 clears the StatusMenu (fades into black)
49F7FF jl ??jmp -> switching Heroes = same Hero
49F804 off_4CDB74 = InventoryDataPtr
49F80B mov edx,esi get PartySlot
49F80D call sub_4A6014 call GetBattlerData(Hero))
49F812 mov eax,[ebx+4] get next/previous PartySlot(?)
49F815 cmp eax,[ebx+78] get Info on current PartySlot(?)
49F818 jnz ??jump to cycle through the PartySlots(?)
49F81A cmp check "previous/next PartySlot" indicator
49F81E jz jump if previous
49F82D call sub_4A6014 call GetBattlerData(Hero)
49F832 mov eax,[eax+4] get next PartySlot's Hero_ID
49F835 mov [ebx+78],eax store Hero_ID (when pressing [right] -> next Hero)
49F849 call sub_4A6014 call GetBattlerData(Hero)
49F84E mov eax,[eax+4] get previous PartySlot's Hero_ID
49F851 mov [ebx+78],eax store Hero_ID (when pressing [left] -> next Hero)
...
49F884 call sub_49F6F8 call StatusMenuSubScene (load data of the next Hero)
49F889 duration of the FadeIn
49F890 off_4CDC60 = MenuParamPtr
49F897 call sub_48CD8C call FadeInScreen
49F8A4 <>StatusMenuWindows
49F8C8 call sub_4C6CF8 draw HeroInfoWindow(?)
49F8CD mov eax,[ebx+7C] get Ptr on HP/MP/Exp-Window
49F8D2 call draw HP/MP/Exp-Window
49F8D5 mov eax,[ebx+80] get Ptr on StatWindow
49F8DD call draw StatWindow
49F8E0 mov eax,[ebx+84] get Ptr on EquipWindow
49F8E8 call draw EquipWindow
49F8EB off_4CDDC8 = ActorDataPtr
49F8F2 mov edx,[ebx+78] get Hero_ID
49F8F5 call sub_4B4870 call GetActor
49F8FC cmp Is Hero_Row = Front?
49F900 jnz jump if Hero_Row = Back
49F905 the string "Frnt" is stored in offset 49DF84
49F90A call sub_40672C LoadString(?)
49F913 = Frnt_Color
49F915 = show (0|1 = no|yes)
49F917 = y-Pos
49F91C = x-Pos
49F925 call PrintString(?)
49F92D the string "Back" is stored in offset 49DF8C
49F932 call sub_40672C LoadString(?)
49F93B = Back_Color
49F93D = show (0|1 = no|yes)
49F93F = y-Pos
49F944 = x-Pos
49F953 the string "Name" is stored in offset 49DF54
49F958 call sub_40672C LoadString(?)
49F961 = Caption:Name_Color
49F963 = show (0|1 = no|yes)
49F965 = y-Pos
49F96A = x-Pos
49F973 call PrintString(?)
49F97D call get HeroName
49F984 = HeroName_Color
49F986 = show (0|1 = no|yes)
49F988 = y-Pos
49F98D = x-Pos
49F996 call PrintString(?)
49F99C the string "Class" is stored in offset 49DF5C
49F9A1 call sub_40672C LoadString(?)
49F9AA = Caption:Class_Color
49F9AC = show (0|1 = no|yes)
49F9AE = y-Pos
49F9B3 = x-Pos
49F9BC call PrintString(?)
49F9C1 call sub_4BF440 get Hero's JobClass
49F9C6 test eax,eax Was a JobClass assigned to the Hero?
49F9C8 jle jump if the hero doesn't have a JobClass assigned
49F9CC call sub_4BF440 get Hero's JobClass //outputs JobClass_ID into EAX
49F9DA call sub_480934 call GetJobClassParam
49F9DF mov eax,[eax+8] get JobClass_Name
49F9E3 = HeroClass_Color
49F9E5 = show (0|1 = no|yes)
49F9E7 = y-Pos
49F9EC = x-Pos
49F9F5 call PrintString(?)
49F9FB the string "Title" is stored in offset 49DF64
49FA00 call sub_40672C LoadString(?)
49FA09 = Caption:Title_Color
49FA0B = show (0|1 = no|yes)
49FA0D = y-Pos
49FA12 = x-Pos
49FA1B call PrintString(?)
49FA23 call sub_4B6D88 get HeroTitle
49FA2C = HeroTitle_Color
49FA2E = show (0|1 = no|yes)
49FA30 = y-Pos
49FA35 = x-Pos
49FA3E call PrintString(?)
49FA44 the string "Condition" is stored in offset 49DF6C
49FA49 call sub_40672C LoadString(?)
49FA52 = Caption:Condition_Color
49FA54 = show (0|1 = no|yes)
49FA56 = y-Pos
49FA6B = x-Pos
49FA64 call PrintString(?)
49FA6C call sub_4C0354 get Condition
49FA77 call sub_4C03A0 get Condition_Color
49FA7D = show (0|1 = no|yes)
49FA7F = y-Pos
49FA84 = x-Pos
49FA8D call PrintString(?)
49FA90 4CDCB4 = VocabStringPtr
49FA97 mov eax,[eax+E4] get VocabString for Level (long term)
49FA9E = Caption:Level_Color
49FAA0 = show (0|1 = no|yes)
49FAA2 = y-Pos
49FAA7 = x-Pos
49FAB0 call PrintString(?)
49FAB9 call sub_4B7070 get HeroLevel
49FAD8 = HeroLevel_Color
49FADA = show (0|1 = no|yes)
49FADC = y-Pos
49FAE1 = x-Pos
49FAEA call PrintString(?)
49FAED off_4CDB74 = InventoryDataPtr
49FAF4 mov edi,[eax+4] get PartySize
49FAFA jl jmp -> no FaceGraphics shown
49FB06 mov edx,esi get PartySlot
49FB08 call sub_4A6014 call GetBattlerData(Hero)
49FB0D mov eax,[eax+4] get Hero_ID at current PartySlot
49FB10 cmp check Hero_ID(?)
49FB1E call sub_4A600C call GetAssignedFaceGraphic
49FB2D call sub_4A600C call GetAssignedFaceGraphic
49FB35 call sub_4678A0 load FaveGraphic(?)
49FB3E mov ecx,[ebx+18] get Window_y-Pos(?)
49FB41 = Face_y-Pos (relatively in the Window)
49FB44 mov edx,[ebx+14] get Window_x-Pos(?)
49FB47 = Face_x-Pos (relatively in the Window)
49FB4A off_4CDB24 = ScreenPtr
49FB54 call sub_4684C0 ??draw on screen(?)
49FB8C 03 set 00 don't show HeroLevels
49FB94 <>??
49FBE8 <>??
49FC20 <>OrderParty
49FC26 off_4CDB74 = InventoryDataPtr
49FC40 xor ebx,ebx initialize EBX as Ptr on PartySlot
49FC45 mov edx,ebx set PartySlot
49FC47 call sub_4A6014 call GetBattlerData(Hero)
49FC4C mov eax,[eax+4] /get Hero_ID(?) at PartySlot
49FC4F memorize Hero_ID
49FC60 dec edi decrease PartySize until the last Hero is listed
49FC61 jump as long as there's still a Hero to be listed
49FC70 call sub_4C6F20 ??has something to do with the Cursor(?)
49FC84 <>OrderPartySubScene
49FC8E = NewConfiguration-Window_Width
49FC90 = NewConfiguration-Window_Height
49FC92 = hide (0|1 = no|yes)
49FC94 = y-Pos
49FC99 = x-Pos
49FC9E mov eax,[ebx+78] get Ptr on Window
49FCA1 call sub_4C63DC call CreateWindow
49FCA6 = OldConfiguration-Window_Width
49FCA8 = OldConfiguration-Window_Height
49FCAA = hide (0|1 = no|yes)
49FCAC = y-Pos
49FCB1 = x-Pos
49FCB6 mov eax,ebx get Ptr on Window
49FCB8 call sub_4C63DC call CreateWindow
49FCBF call sub_49FC20 get PartyEntries
49FCC8 <>ResetOrderWindows
49FCD0 call ??
49FCD8 call ??
49FCDB mov eax,ebx get Ptr on Window
49FCDD call sub_4C66E4 terminate Window
49FCE4 <>OrderMenuNavigation
49FD03 call sub_4C6BEC get pressed Keys
49FD0B cmp Is the Cursor in the ConfigWindow?
49FD0F jz jump if it is (else: goes to ConfirmWindow)
49FD17 call allow CursorNavigation(?)
49FD1A off_4CDAEC = KeyPtr
49FD21 test Was a DecisionKey pressed?
49FD28 jz jump if not pressed
49FD31 cmp Is the Cursor in the ConfirmWindow on "Confirm"?
49FD35 jnz jump if it's on "Redo"
49FD42 call sub_48B924 get DecisionSound
49FD50 call sub_48B538 PlaySound
49FD55 off_4CDB74 = InventoryDataPtr
49FD5C mov eax,[eax+4] get PartySize
49FD6D set PartySize as a Ptr
49FD70 off_4CDB74 = InventoryDataPtr
49FD77 mov edx,[eax+4] get PartySize
49FD7A dec edx PartySize -1 (second to last PartySlot)
49FD82 call sub_4A6014 call GetBattlerData(Hero)
49FD91 call sub_4A615C store Hero_ID(?) remove Hero from Party(?)
49FD9D jl jmp -> remove every Hero from the Party
49FDA5 off_4CDB74 = InventoryDataPtr
49FDAC get Hero_ID
49FDB3 call sub_4A6118 add Hero to the Party
49FDBE off_4CDE54 = HeroEventPtr
49FDC5 call sub_4A90EC change HeroEventCharset (to the new PartyLeader)
49FDDD call sub_48BA04 get CancelSound (when pressing "Redo")
49FDEB call sub_48B538 PlaySound
49FDF4 call ??
49FDFC call clear NewConfiguration-Window when choosing "Redo"
49FE04 call close ConfirmWindow + erase its Cursor
49FE09 call sub_49FC20 call OrderParty //resume PartyConfiguration
49FE13 off_4CDAEC = KeyPtr
49FE1A test Was a CancelKey pressed?
49FE21 jz jump if not pressed
49FE2E call sub_48BA04 get CancelSound (when inside the ConfirmWindow)
49FE3C call sub_48B538 PlaySound
49FE45 call ??
49FE4D call clear NewConfiguration-Window
49FE55 call close ConfirmWindow + erase its Cursor
49FE5A call sub_49FC20 call OrderParty //resume PartyConfiguration
49FE6E off_4CDAEC = KeyPtr
49FE75 test Was a DecisionKey pressed?
49FE7C jz jump if not pressed
49FE85 cmp Is there still a Hero on the PartySlot?
49FE8D jle jump if there isn't (-> play BuzzerSound)
49FE9A call sub_48B924 get DecisionSound
49FEA8 call sub_48B538 call PlaySound
49FEB1 call clear Name of chosen Hero
49FEB9 call ??
49FEBC mov eax,[esi+44] ??get Cursor_Pos(?)
49FEBF ??get Hero at Cursor_Pos(?)
49FEC6 get new PartySlotPtr(?)
49FECC memorize moved Hero(?)
49FED3 ??increase TargetSlotPtr(?)
49FED9 set Ptr on Hero by Cursor_Pos
49FEDC get HeroName of the moved Hero(?)
49FEE3 remove Hero at Cursor_Pos
49FEE6 xor edx,edx EDX = 0, as a "Hero already moved" marker
49FEE8 mark selected Heroes as moved
49FEEF TargetSlotPtr +1 (Ptr on NewConfig)
49FEFC mov eax,[eax+4] get PartySize
49FEFF cmp Is PartySize = TargetSlotPtr? (= whole Party moved)
49FF05 jg jump if there's still Heroes to be moved (else: Confirm)
49FF0F call sub_4C6F9C erase Cursor in the ConfigWindow
49FF14 = ConfirmWindow_Width
49FF16 = ConfirmWindow_Height
49FF18 = slide open (0|1 = no|yes)
49FF1A = y-Pos
49FF1F = x-Pos
49FF24 mov eax,[esi+7C] get Ptr on Window
49FF27 call sub_4C63DC call CreateWindow
49FF2F the string "Confirm" is stored in offset 49DF74
49FF34 call sub_40672C LoadString(?)
49FF3D = Confirm_Color
49FF3F = initialize (0|1 = no|yes)
49FF41 = y-Pos
49FF46 = x-Pos
49FF4B mov eax,[esi+7C] get Ptr on Window (7C = ConfirmWindow)
49FF50 call PrintString(?)
49FF56 the string "Redo" is stored in offset 49DF7C
49FF5B call sub_40672C LoadString(?)
49FF64 = Redo_Color
49FF66 = initialize (0|1 = no|yes)
49FF68 = y-Pos
49FF6D = x-Pos
49FF72 mov eax,[esi+7C] get Ptr on Window
49FF77 call PrintString(?)
49FF7C mov eax,[esi+7C] get Ptr on Window
49FF7F call sub_4C6FBC put Cursor into ConfirmWindow //allow ConfirmNavigation
49FF90 call sub_48BAE4 get BuzzerSound (if there's no Hero in the PartySlot)
49FF9E call sub_48B538 PlaySound
49FFA8 off_4CDAEC = KeyPtr
49FFAF test Was a CancelKey pressed?
49FFB6 jz jump if not pressed
49FFB8 cmp [esi+84],0 Is TargetSlotPtr = 0?
49FFBF jle jump if = 0 //closes OrderMenu
49FFC8 call sub_48BA04 get CancelSound
49FFD6 call sub_48B538 PlaySound
49FFDF call ??
49FFE7 call ??
49FFEA dec [esi+84] TargetSlotPtr -1
49FFF0 mov eax,[esi+84] get TargetSlotPtr
49FFF6 get Hero at last filled TargetSlot(?)
49FFFD ??erases HeroEntries (PartyPos not 1) in TargetSlot#1
4A0004 get Hero from last filled TargetSlot
4A000B mov eax,[esi+84] get TargetSlotPtr(?)
4A0013 ??clear last filled TargetSlot(?)
4A001A mov eax,[esi+78] get Ptr on Window (78 = NewConfigWindow)
4A001F call ??
4A002B off_4CDB74 = InventoryDataPtr
4A0032 mov eax,[eax+4] get PartySize
4A0036 test Is there any Hero left in the OldConfigWindow?
4A0038 jl jump if there isn't
4A003B memorize PartySize
4A003E xor ebx,ebx initialize PartySlotPtr
4A0040 cmp Was the Hero in the PartySlot moved?
4A0048 jle jump to clear the Hero's name
4A0051 mov edx,ebx get PartySlot
4A0053 call sub_4A6014 call GetBattlerData(Hero)
4A005D call print HeroNames
4A0064 = HeroNames_Color (in OldConfigWindow)
4A0066 = initialize (0|1 = no|yes)
4A0068 mov ecx,ebx get PartySlot#
4A006A shl ecx,4 y-Pos-Difference
4A006D = PartySlot#1_y-Pos
4A0070 = x-Pos
4A0079 call PrintString(?)
4A007C inc ebx PartySlotPtr +1
4A007D dec [ebp-4] memorized PartySize -1
4A0080 jnz jump if not at last filled PartySlot
4A0082 mov eax,[esi+84] initialize TargetSlotPtr (for PrintString into NewConfig)
4A0089 test Are there Heroes in the NewConfigWindow?
4A008B jl jump if there aren't
4A0091 xor ebx,ebx initialize TargetSlotPtr(?)
4A0093 cmp Is the TargetSlot empty?(?)
4A009B jle jump if there's no Hero in that TargetSlot
4A009D off_4CDB74 = InventoryDataPtr
4A00A4 get PartySlot
4A00AB call sub_4A6014 call GetBattlerData(Hero)
4A00B5 call load HeroName(?)
4A00BC = HeroNames_Color (in NewConfigWindow)
4A00BE = show (0|1 = no|yes)
4A00C0 mov ecx,ebx get TargetSlot#
4A00C2 shl ecx,4 y-Pos-Difference
4A00C5 = TargetSlot#1_y-Pos
4A00C8 = x-Pos
4A00D2 call PrintString(?)
4A00D5 inc ebx next TargetSlot
4A0104 <>DrawOrderMenu
4A0107 mov eax,ebx get Ptr on OldConfigWindow
4A0109 call sub_4C6CF8 draw Window
4A010E mov eax,[ebx+78] get Ptr on NewConfigWindow
4A0113 call draw Window
4A0116 mov eax,[ebx+7C] get Ptr on ConfirmWindow
4A011B call draw Window
4A0120 <>??
4A0188 <>??
47900C <>EquipMenuSubScene (2k3: 4A01CC)
479012 mov [ebx+4],2 set to 2 columns of Items
47901E = InfoWindow_Width
479023 = InfoWindow_Height
479025 = hide (0|1 = no|yes)
479027 = y-Pos Default = 0 //set manually: [B1 ..]
479029 = x-Pos Default = 0 //set manually: [B2 ..]
47902B mov eax,[ebx68] get Ptr on InfoWindow
47902E call sub_493C30 call CreateWindow
479035 mov eax,[ebx+6C] get Ptr on StatWindow
479038 sub_4788C8 update/draw EquipStatWindow
47903F mov eax,[ebx+70] get Ptr on Window EquipWindow
479042 call sub_478DEC update/draw EquipWindow
479049 mov eax,[ebx+70] get Ptr on Window EquipWindow
47904C call sub_4946DC call CreateCursor
479051 mov eax,[ebx+6C] get Ptr on Window StatWindow
479056 call ??
479059 mov eax,[ebx+70] get Ptr on Window EquipWindow
47905E call ??
479061 = EquipmentPoolWindow_Width
479066 = EquipmentPoolWindow_Height
479068 = slide open (0|1 = no|yes)
47906A = y-Pos
47906F = x-Pos Default = 0 //set manually: [B1 ..]
479071 mov eax,ebx get Ptr on Window
479073 call sub_493C30 call CreateWindow
47907C call list/print Equipment into EquipmentPoolWindow
479084 <>InfoWindow (2k3: 4A0254)
479085 mov ebx,eax memorize MenuParamPtr
479087 mov eax,[ebx+68] get Ptr on InfoWindow
47908C call initialize Infowindow's content(?)
47908F mov eax,[ebx+6C] get Ptr on StatWindow
479094 call ??
479097 mov eax,[ebx+70] get Ptr on EquipWindow
47909C call ??show Item_Description(?)
47909F mov eax,ebx get MenuParamPtr
4790A1 call sub_493E24 close Window
4790A8 <>EquipmentPool (2k3: 4A0280)
4790A9 mov ebx,eax memorize Ptr on Window
4790BC mov edx,[ebx+64] get Hero_ID
4790BF call sub_482A78 call GetActor
4790C4 call sub_4844B0 get EquipmentLocked_flag
4790C9 test al,al Is the EquipmentLocked_flag = true?
4790CB jz jump to loc_4790D4 if false
4790D4 off_49ACE8 = ActorDataPtr
4790DB mov edx,[ebx+64] get Hero_ID
4790DE call sub_482A78 call GetActor
4790E3 mov edx,[ebx+74] get current CursorPos (the selected EquipSlot)
4790E6 call sub_483AB4 call GetEquipPoolSize
4790EB mov [ebx+40],eax memorize amount of CursorPositions in the EquipmentPool
4790EE mov eax,ebx get Ptr on Window
4790F0 call sub_493D80 call RefreshWindow (clear Window's contents)
4790F5 mov eax,ebx get Ptr on Window
4790F7 call sub_479100 call GetEquipmentInfo
479100 <>GetEquipmentInfo (2k3: 4A02DC)
479104 mov eax,[ebx+70] get Ptr on EquipWindow
479107 cmp [eax+51],0 Is the Cursor in the EquipWindow?
47910B jz jump if it's in the EquipmentPoolWindow
47910D off_49ACE8 = ActorDataPtr
479114 mov edx,[ebx+64] get Hero_ID
479117 call sub_482A78 call GetActor
47911C mov edx,[ebx+74] get current EquipSlot (0 = Slot#1 | 1 = Slot#2 | ...)
47911F call sub_483870 call GetEquippedItem (by current EquipSlot)
479124 mov esi,eax memorize Item_ID
47912B cmp eax,[ebx+40] ??
47912E jge jump to not show any EquipmentInfo
479130 off_49ACE8 = ActorDataPtr
479137 mov edx,[ebx+64] get Hero_ID
47913A call sub_482A78 call GetActor
47913F mov ecx,[ebx+44] get the Position in the EquipmentList (0 = upper left)
479142 mov edx,[ebx+74] get EquipSlot (0=Slot#1 | 1=Slot#1 | ...)
479145 call sub_483BA0 get Equipment's Item_ID
47914A mov esi,eax memorize Item_ID
479150 test esi,esi Was any Item_ID memorized / Cursor on Equipment?
479152 jle jump if there's no EquipmentInfo to be shown
479154 off_49AA34 = ItemParamPtr
47915B mov edx,esi get Item_ID of the Equipment
47915D sub_4631D0 call GetItemParam
479162 mov edx,[eax+C] get Item's Explanation
479168 call sub_495BA4 call UpdateInfoWindow
479170 xor edx,edx no Explanation
479175 call sub_495BA4 call UpdateInfoWindow (empty Window)
479180 <>EquipPoolList (2k3: 4A0364)
47918D memorize current List_Position's y-Pos
479190 memorize current List_Position's x-Pos
4791A3 off_49ACE8 = ActorDataPtr
4791AA mov edx,[ebx+64] get Hero_ID
4791AD call sub_482A78 call GetActor
4791B2 mov get an Equipments Position in the EquipmentList
4791B5 mov edx,[ebx+74] get EquipSlot
4791B8 call sub_483BA0 get Equipment's Item_ID
4791BD mov esi,eax memorize Item_ID
4791BF test esi,esi Is there an Item in the current List_Position?
4791C1 jle jump if that List_Position is empty
4791C3 off_49AA9C = InventoryDataPtr
4791CA mov edx,esi get memorized Item_ID
4791CC call sub_47D2A0 call GetOwnedItemAmount
4791D1 memorize ItemAmount
4791D4 off_49AA34 = ItemParamPtr
4791DB mov edx,esi get memorized Item_ID
4791DD call sub_4631D0 call GetItemParam
4791E2 mov eax,[eax+8] get Item_Name
4791E6 = ItemName_Color
4791EA = y-Pos
4791ED = x-Pos
4791F0 mov eax,ebx get Ptr on Window
4791F4 call PrintString(?)
4791FB get memorized ItemAmount
479218 = ItemAmount_Color
47921C get x-Pos of the Equipment
47921F add edx,78 calculate ItemAmount's x-Pos
479222 get y-Pos of the Equipment
479225 mov eax,ebx get Ptr on Window
479229 call PrintString(?)
479258 05 set 00 don't show ItemAmount
47925C [3A] = " : " (ASCII character in front of the ItemAmount)
479264 <>EquipMenuSubScene (2k3: 4A0448)
479269 mov ebx,eax memorize Ptr on Window
47926B mov eax,ebx get Ptr on Window
47926D call sub_494340 call SlideOpenWindow
479272 mov eax,ebx get Ptr on Window
479274 call sub_479100 call GetEquipmentInfo
479279 mov eax,[ebx+70] get Ptr on Window
47927E call ??
479281 cmp [ebx+51],0 ??Is the Cursor in the EquipWindow?
479285 jz jump if it is
47928A cmp ??
47929B xor esi,esi initialize EquipSlotPtr
__________UnequipTwoHandedLoop__________
47929D -> off_49ACE8 = ActorDataPtr
4792A4 | mov edx,[ebx+64] get Hero_ID
4792A7 | c.sub_482A78 call GetActor
4792AC | mov get previous Item's Item_ID
4792B0 | mov edx,esi get EquipSlot (0 = EquipSlot#1 | 1 = EquipSlot#2)
4792B2 | c.sub_483964 call UnequipTwoHanded
4792B7 | inc esi EquipSlot +1
4792B8 | cmp esi,5 Were all EquipSlots tested?
4792BB --jnz
________________________________________
4792BD off_49ACE8 = ActorDataPtr
4792C4 mov edx,[ebx+64] get Hero_ID
4792C7 call sub_482A78 call GetActor
4792CC mov ecx,[ebx+44] get current List_Position in the EquipmentPool
4792CF mov edx,[ebx+74] get EquipSlot
4792D2 call sub_483BA0 get Equipment's Item_ID
4792D8 off_49ACE8 = ActorDataPtr
4792DF mov edx,[ebx+64] get Hero_ID
4792E2 call sub_482A78 call GetActor
4792E7 mov edx,[ebx+74] get EquipSlot(?)
4792EB call sub_483964 call UnequipTwoHanded
4792F0 mov eax,[ebx+6C] ??
4792F3 call sub_478904 call StatChange
4792F8 mov eax,[ebx+70] get Ptr on Window(?)
4792FB cmp [eax+51],0 ??Is the Cursor currently in the EquipmentPoolWindow?
4792FF jz jump to loc_479505
479305 mov edx,[eax+44] get EquipSlot (where the Cursor currently is)
479308 cmp edx,[ebx+74] Was the Cursor moved onto another EquipSlot?
47930B jz jump if it wasn't
47930D mov [ebx+74],edx get new EquipSlot
479314 call update EquipmentPoolWindow (Items according to EquipSlot)
479317 off_49AA04 = KeyPtr
47931E test Was a DecisionKey pressed? (in the EquipWindow)
479325 jz jump if not pressed
47932B off_49ACE8 = ActorDataPtr
479332 mov edx,[ebx+64] get Hero_ID
479335 call sub_482A78 call GetActor
47933A call sub_4844B0 get EquipmentLocked_flag
47933F test Is it impossible to change the Hero's Equipment?
479341 jnz jump if EquipmentLocked_flag = true
47934A call sub_46A4A0 get DecisionSound
479358 call sub_46A0A8 call PlaySound
47935D xor esi,esi initialize EquipSlotPtr
__________UpdateShownEquipmentLoop__________
47935F -> off_49ACE8 = ActorDataPtr
479366 | mov edx,[ebx+64] get Hero_ID
479369 | c.sub_482A78 call GetActor
47936E | mov edx,esi get EquipSlotPtr
479370 | c.sub_483870 call GetEquippedItem
479375 | get current/changed Equipment_IDs into the EquipSlots
479379 | in esi EquipSlotPtr +1
47937A | cmp esi,5 Is ESI = 5?
47937D --jnz jump if it isn't
____________________________________________
47937F xor edx,edx 0 = disallow current CursorNavigation
479381 mov eax,[ebx+70] get Ptr on Window
479384 call sub_4946DC call CreateCursor (updates/disallows CursorNavigation)
479389 mov dl,1 1 = allow new CursorNavigation + ShowCursor
47938B mov eax,ebx get Ptr on Window (EquipmentPoolWindow)
47938D call sub_4946DC call CreateCursor
4793A8 call sub_46A670 get BuzzerSound
4793B6 call sub_46A0A8 call PlaySound
4793C7 test Was a CancelKey pressed? (in the EquipWindow)
4793CE jz jump if not pressed
4793D7 call sub_46A588 get CancelSound
4793E5 call sub_46A0A8 call PlaySound
4793EE call close EquipMenu
4793FD test Was [Right] pressed? (in the EquipWindow)
479404 jnz jump if pressed
47940D test Was [Left] pressed? (in the EquipWindow)
479414 jz jump if not pressed
47941A off_49AA9C = InventoryDataPtr
479421 mov eax,[eax+4] get PartySize
479424 cmp eax,1 Is there only one Hero in the Party?
479427 jle jump if onl one Hero (disallows switching the character)
47943C call sub_46A3B8 get CursorSound
47944A call sub_46A0A8 call PlaySound
479456 test Was [Right] pressed? (Code's shared for Left/Right cases)
47945D setnz al AL = 1 when [Right] was pressed
479460 memorize AL (0 = previous PartySlot | 1 = next PartySlot)
479463 duration of the FadeOut
47946A off_49AB88 = MenuParamPtr
479471 call sub_46B538 call FadeOutScreen (until it opens up again in 4794FB)
//479463 .. 479475 set [90] -> switch characters without the screen fading out/in
479476 mov edi,ebp get PartySize
479479 test edi,edi Is there anyone in the Party?
47947B jl jump to NOT switch characters
47947E xor esi,esi initialize PartySlotPtr
__________LoopPartyLoop__________
479480 -> off_49AA9C = InventoryDataPtr
479485 | mov eax,[eax] get Ptr on new PartySlot(?)
479487 | mov edx,esi get PartySlot
479489 | c.sub_47CE60 load BattlerData from PartySlot
47948E | mov eax,[eax+4] get current PartySlot
479491 | cmp Was the PartySlot changed?
479494 | jnz jump if not
479496 | cmp Memorized AL = 0? (= [Left] was pressed)
47949A <<jz jump to switch to a previous PartySlot
47949C | lea get next PartySlot
4794A2 | off_49AA9C = InventoryDataPtr
4794A9 | c.sub_47CE60 load BattlerData from PartySlot
4794AE | mov eax,[eax+4] get current PartySlot
4794B1 | memorize current PartySlot (before switching characters)
4794B4 | jmp jump to switch to another character's Equipment
4794B6 >>lea get previous PartySlot
4794BE | off_49AA9C = InventoryDataPtr
4794C5 | c.sub_47CE60 load BattlerData from PartySlot
4794CA | mov eax,[eax+4] get current PartySlot
4794CD | memorize current PartySlot (before switching characters)
4794D0 | jmp jump to switch to another character's Equipment
4794D2 | inc esi PartySlotPtr +1
4794D3 | dec edi PartySize -1
4794D4 --jnz loop until PartySize = 0
_________________________________
4794D6 mov eax,[ebx+6C] get Ptr on StatWindow
4794DB call update StatWindow
4794DE mov eax,[ebx+70] get Ptr on EquipWindow
4794E3 call update EquipWindow
4794E6 mov eax,ebx get Ptr on EquipmentPoolWindow
4794EA call update EquipmentPoolWindow
4794ED duration of the FadeIn
4794F4 off_49AB88 = MenuParamPtr
4794FB call sub_46B4C0 call FadeInScreen //show EquipMenu again
loc_479505
479505 cmp [ebx+51],0 ??Is the Cursor currently not in the EquipmentPoolWindow?
479509 jz jump if it isn't
479516 test Was a DecisionKey pressed?
47951D jz jump if not pressed
47952A call sub_46A4A0 get DecisionSound
479538 call sub_46A0A8 call PlaySound
47953F mov eax,ebx get Ptr on Window
479541 call sub_4946BC call ClearCursor (erase Cursor in the EquipmentPoolWindow)
479546 mov dl,1 1 = resume CursorNavigation + Graphics
479548 mov eax,[ebx+70] get Ptr on Window (70 = EquipWindow)
47954B call sub_4946DC call create Cursor (switch back to the first Cursor)
479550 xor esi,esi initialize EquipSlotPtr
__________UnequipTwoHandedLoop__________
479552 -> off_49ACE8 = ActorDataPtr
479559 | mov edx,[ebx+64] get Hero_ID
47955C | c.sub_482A78 call GetActor
479561 | mov get previously equipped Equipment's Item-ID
479565 | mov edx,esi get EquipSlot
479567 | c.sub_483964 call UnequipTwoHanded
47956C | inc esi EquipSlot +1
47956D | cmp esi,5 Were all EquipSlots tested?
479570 --jnz
________________________________________
479579 mov edx,[ebx+64] get Hero_ID
47957C call sub_482A78 call GetActor
479581 mov ecx,[ebx+44] get current List_Position in the EquipmentPool
479584 mov edx,[ebx+74] get EquipSlot (0=Slot#1 | 1=Slot#2 | ...)
479587 call sub_483BA0 get Equipment's Item_ID
47958C push eax memorize Item_ID
479594 mov edx,[ebx+64] get Hero_ID
479597 call sub_482A78 call GetActor
47959C mov edx,[ebx+74] get EquipSlot
47959F pop ecx get memorized Item_ID
4795A0 call sub_4839DC call EquipItem (Input: ECX = Item_ID | EDX = EquipSlot)
4795A5 mov eax,ebx get Ptr on EquipmentPoolWindow
4795A9 call update EquipmentPoolWindow
4795AC mov eax,[ebx+6C] get Ptr on StatWindow
4795B1 call update StatWindow
4795B4 mov eax,[ebx+6C] get Ptr on EquipWindow
4795B9 call update EquipWindow
4795C3 test was a CancelKey pressed?
4795CA jz jump if not pressed
4795D3 call sub_46A588 get CancelSound
4795E1 call sub_46A0A8 call PlaySound
4795E6 xor edx,edx 0 = erase Cursor
4795E8 mov eax,ebx get Ptr on EquipmentPoolWindow
4795EA call sub_4946BC call ClearCursor
4795EF mov dl,1 1 = show Cursor + allow CursorNavigation
4795F1 mov eax,[ebx+70] get Ptr on EquipWindow
4795F4 call sub_4946DC call CreateCursor
4795F9 xor esi,esi initialize EquipSlotPtr
__________UnequipTwoHandedLoop__________
4795FB -> off_49ACE8 = ActorDataPtr
479602 | mov edx,[ebx+64] get Hero_ID
479605 | c.sub_482A78 call GetActor
47960A | mov get previously equipped Item's Item-ID
47960E | moc edx,esi get EquipSlot
479610 | c.sub_483964 call UnequipTwoHanded
479615 | inc esi EquipSlot +1
479616 | cmp esi,5 Were all EquipSlots tested?
479619 --jnz
________________________________________
47961F call reset List_Position to 0
479622 mov eax,[ebx+6C] get Ptr on Window
479625 call sub_478904 call StatChange
479630 <>DrawEquipMenu (2k3: 4A08D8)
479635 call sub_49444C draw EquipmentPoolWindow
47963A mov eax,[ebx+68] get Ptr on InfoWindow
47963F call show InfoWindow
479642 mov eax,[ebx+6C] get Ptr on StatWindow
479647 call show StatWindow
47964A mov eax,[ebx+70] get Ptr on EquipWindow
4796AF call show EquipWindow
479654 <>?? (2k3: 4A0904)
479698 <>?? (2k3: 4A0948)
4796C8 <>EndGameSubScene (2k3: 4A0978)
4796CE mov ebx,eax memorize Ptr on QuitWindow
4796D0 off_49ABDC = VocabStringPtr
4796D7 mov eax,[eax+13C] get VocabString for "Quit game?"
4796DD call sub_403D4C get StringLength
4796EB add eax,10 add to Length (to fit the text into the QuitWindow)
4796EE = QuitWindow_Width considers the length of the "Quit game?"
4796EF = QuitWindow_Height
4796F1 = slide open (0|1 = no|yes)
4796F3 sar eax,1 divide StringLength by 2
4796FA = x-Pos (center of the Window)[/color]
4796FF sub edx,eax correct x-Pos (move the Window's center onto x-Pos)
479701 = y-Pos
479706 mov eax,[ebx+64] get Ptr on Window
479709 call sub_493C30 call CreateWindow
47970E off_48ABDC = VocabStringPtr
479715 mov eax,[eax+13C] get VocabString for "Quit game?"
47971C = QuitMessage_Color
47971E = show (0|1 = no|yes)
479720 = y-Pos
479725 = x-Pos
47972A mov eax,[ebx+64] get Ptr on Window to print the VocabString into
47972F call PrintString(?)
479739 mov eax,[eax+144] get VocabString for "yes"
47973F call sub_403D4C get StringLength
479744 mov esi,eax memorize yes_StringLength
47974D mov eax,[eax+148] get VocabString for "no"
479753 call sub_403D4C get StringLength
479758 mov edi,edx memorize no_StringLength
47975A mov [esp+0],esi get yes_StringLength
47975D mov [esp+4],edi get no_StringLength
479761 mov eax,esp get Ptr
479763 mov edx,1 amount of compared strings(?) (0 = one | 1 = two)
479768 call sub_41EB54 call CompareStringLength (longer StringLength is in EAX)
479772 add eax,10 add to Length (to fit the text into the YesNoWindow)
479775 = YesNoWindow_Width
479776 = YesNoWindow_Height
479778 = slide open (0|1 = no|yes)
47977A sar eax,1 divide StringLength by 2
479781 = x-Pos (center of the Window)
479786 sub edx,eax correct x-Pos (move the Window's center onto x-Pos)
479788 = y-Pos
47978D mov eax,ebx get Ptr on Window
47978F call sub_493C30 call CreateWindow
479794 off_49ABDC = VocabStringPtr
47979B mov eax,[eax+144] get VocabString for Yes
4797A2 = Yes_Color
4797A4 = initialize (0|1 = no|yes)
4797A6 = y-Pos
4797AB = x-Pos
4797B0 mov eax,ebx get Ptr on Window to print the VocabString into
4797B4 call PrintString(?)
4797BE mov eax,[eax+148] get VocabString for No
4797C5 = No_Color
4797C7 = initialize (0|1 = no|yes)
4797C9 = y-Pos
4797CE = x-Pos
4797D3 mov eax,ebx get Ptr on Window to print the VocabString into
4797D7 call PrintString(?)
4797DA mov dl,1 1 = show Cursor + allow CursorNavigation
4797D4 call sub_4946DC call CreateCursor
4797EC <>?? (2k3: 4A0A9C)
4797F4 call ??
4797F7 mov eax,ebx get Ptr on Window
4797F9 call sub_493E24 terminate Window
479800 <>?? (2k3: 4A0AB0)
479808 call ??
47980D call sub_494340 call SlideOpenWindow
479814 <>DrawQuitGame (2k3: 4A0AC4)
47981C call show QuitWindow
479821 call sub_49444C draw YesNoWindow
479828 <>?? (2k3: 4A0AD8)
4798E4 <>?? (2k3: 4A0BB4)
479954 <>?? (2k3: 4A0C34)
4799AC <>?? (2k3: 4A0C9C)