- fix DrawTargetArrow

- included missing files
This commit is contained in:
Ilya Shurumov 2020-06-01 01:08:51 +06:00
parent 2a02417d3b
commit 93a14f8a06
4 changed files with 118 additions and 700 deletions

View File

@ -9,706 +9,7 @@
</SAVE_STATE>
</PROJECT_DATA_XML_NAME>
<TOOL_MANAGER ACTIVE_WORKSPACE="Workspace">
<WORKSPACE NAME="Workspace" ACTIVE="true">
<RUNNING_TOOL TOOL_NAME="CodeBrowser">
<ROOT_NODE X_POS="-8" Y_POS="-8" WIDTH="1936" HEIGHT="1056" EX_STATE="7">
<SPLIT_NODE WIDTH="100" HEIGHT="100" DIVIDER_LOCATION="0" ORIENTATION="VERTICAL">
<SPLIT_NODE WIDTH="1621" HEIGHT="816" DIVIDER_LOCATION="148" ORIENTATION="VERTICAL">
<COMPONENT_NODE TOP_INFO="0">
<COMPONENT_INFO NAME="Entropy" OWNER="EntropyPlugin" TITLE="Entropy" ACTIVE="false" GROUP="Header" INSTANCE_ID="3207819926581772885" />
<COMPONENT_INFO NAME="Overview" OWNER="OverviewPlugin" TITLE="Overview" ACTIVE="false" GROUP="Header" INSTANCE_ID="3207819926581772883" />
</COMPONENT_NODE>
<SPLIT_NODE WIDTH="1920" HEIGHT="939" DIVIDER_LOCATION="217" ORIENTATION="HORIZONTAL">
<SPLIT_NODE WIDTH="416" HEIGHT="939" DIVIDER_LOCATION="639" ORIENTATION="VERTICAL">
<SPLIT_NODE WIDTH="416" HEIGHT="597" DIVIDER_LOCATION="502" ORIENTATION="VERTICAL">
<COMPONENT_NODE TOP_INFO="0">
<COMPONENT_INFO NAME="Program Tree" OWNER="ProgramTreePlugin" TITLE="Program Trees" ACTIVE="true" GROUP="Default" INSTANCE_ID="3336092370730337119" />
</COMPONENT_NODE>
<COMPONENT_NODE TOP_INFO="0">
<COMPONENT_INFO NAME="Symbol Tree" OWNER="SymbolTreePlugin" TITLE="Symbol Tree" ACTIVE="true" GROUP="Default" INSTANCE_ID="3336092379265745729" />
</COMPONENT_NODE>
</SPLIT_NODE>
<COMPONENT_NODE TOP_INFO="0">
<COMPONENT_INFO NAME="DataTypes Provider" OWNER="DataTypeManagerPlugin" TITLE="Data Type Manager" ACTIVE="true" GROUP="Default" INSTANCE_ID="3336092379265745735" />
</COMPONENT_NODE>
</SPLIT_NODE>
<SPLIT_NODE WIDTH="1500" HEIGHT="939" DIVIDER_LOCATION="866" ORIENTATION="VERTICAL">
<SPLIT_NODE WIDTH="1500" HEIGHT="734" DIVIDER_LOCATION="705" ORIENTATION="VERTICAL">
<SPLIT_NODE WIDTH="1500" HEIGHT="810" DIVIDER_LOCATION="611" ORIENTATION="HORIZONTAL">
<SPLIT_NODE WIDTH="1500" HEIGHT="810" DIVIDER_LOCATION="460" ORIENTATION="HORIZONTAL">
<COMPONENT_NODE TOP_INFO="0">
<COMPONENT_INFO NAME="Listing" OWNER="CodeBrowserPlugin" TITLE="Listing: DRIVER2_ITALIAN.ELF" ACTIVE="true" GROUP="Core" INSTANCE_ID="3336092370730337115" />
</COMPONENT_NODE>
<COMPONENT_NODE TOP_INFO="0">
<COMPONENT_INFO NAME="Decompiler" OWNER="DecompilePlugin" TITLE="Decompile: InitThrownBombs" ACTIVE="true" GROUP="Default" INSTANCE_ID="3336092370730337112" />
</COMPONENT_NODE>
</SPLIT_NODE>
<SPLIT_NODE WIDTH="353" HEIGHT="734" DIVIDER_LOCATION="613" ORIENTATION="HORIZONTAL">
<COMPONENT_NODE TOP_INFO="0">
<COMPONENT_INFO NAME="Data Type Preview" OWNER="DataTypePreviewPlugin" TITLE="Data Type Preview" ACTIVE="false" GROUP="Default" INSTANCE_ID="3336092379374797636" />
</COMPONENT_NODE>
<COMPONENT_NODE TOP_INFO="0">
<COMPONENT_INFO NAME="Bytes" OWNER="ByteViewerPlugin" TITLE="Bytes: DRIVER2_ITALIAN.ELF" ACTIVE="false" GROUP="Default" INSTANCE_ID="3336092370730337113" />
<COMPONENT_INFO NAME="Data Window" OWNER="DataWindowPlugin" TITLE="Defined Data" ACTIVE="false" GROUP="Default" INSTANCE_ID="3336092379374797640" />
<COMPONENT_INFO NAME="Defined Strings" OWNER="ViewStringsPlugin" TITLE="Defined Strings" ACTIVE="false" GROUP="Default" INSTANCE_ID="3336092379374797641" />
<COMPONENT_INFO NAME="Equates Table" OWNER="EquateTablePlugin" TITLE="Equates Table" ACTIVE="false" GROUP="Default" INSTANCE_ID="3336092370730337109" />
<COMPONENT_INFO NAME="External Programs" OWNER="ReferencesPlugin" TITLE="External Programs" ACTIVE="false" GROUP="Default" INSTANCE_ID="3336092379265745732" />
<COMPONENT_INFO NAME="Functions Window" OWNER="FunctionWindowPlugin" TITLE="Functions" ACTIVE="false" GROUP="Default" INSTANCE_ID="3336092379265745734" />
<COMPONENT_INFO NAME="Relocation Table" OWNER="RelocationTablePlugin" TITLE="Relocation Table" ACTIVE="false" GROUP="Default" INSTANCE_ID="3336092379374797642" />
</COMPONENT_NODE>
</SPLIT_NODE>
</SPLIT_NODE>
<COMPONENT_NODE TOP_INFO="0">
<COMPONENT_INFO NAME="Virtual Disassembler - Current Instruction" OWNER="DisassembledViewPlugin" TITLE="Disassembled View" ACTIVE="false" GROUP="Default" INSTANCE_ID="3336092379265745733" />
</COMPONENT_NODE>
</SPLIT_NODE>
<COMPONENT_NODE TOP_INFO="0">
<COMPONENT_INFO NAME="Console" OWNER="ConsolePlugin" TITLE="Console" ACTIVE="true" GROUP="Default" INSTANCE_ID="3336092370730337117" />
<COMPONENT_INFO NAME="Bookmarks" OWNER="BookmarkPlugin" TITLE="Bookmarks" ACTIVE="false" GROUP="Core.Bookmarks" INSTANCE_ID="3336092370730337118" />
</COMPONENT_NODE>
</SPLIT_NODE>
</SPLIT_NODE>
</SPLIT_NODE>
<COMPONENT_NODE TOP_INFO="0">
<COMPONENT_INFO NAME="Function Call Trees" OWNER="CallTreePlugin" TITLE="Function Call Trees" ACTIVE="false" GROUP="Default" INSTANCE_ID="3336092379265745731" />
</COMPONENT_NODE>
</SPLIT_NODE>
<WINDOW_NODE X_POS="883" Y_POS="100" WIDTH="1033" HEIGHT="837">
<SPLIT_NODE WIDTH="1920" HEIGHT="970" DIVIDER_LOCATION="611" ORIENTATION="HORIZONTAL">
<COMPONENT_NODE TOP_INFO="0">
<COMPONENT_INFO NAME="Script Manager" OWNER="GhidraScriptMgrPlugin" TITLE="Script Manager" ACTIVE="false" GROUP="Script Group" INSTANCE_ID="3336092370730337116" />
</COMPONENT_NODE>
<COMPONENT_NODE TOP_INFO="0">
<COMPONENT_INFO NAME="Script Editor" OWNER="GhidraScriptMgrPlugin" TITLE="DRIVER2_ITALIANTDRDefineFunctions.java" ACTIVE="false" GROUP="Script Group" INSTANCE_ID="3323422984231791895" />
</COMPONENT_NODE>
</SPLIT_NODE>
</WINDOW_NODE>
<WINDOW_NODE X_POS="423" Y_POS="144" WIDTH="1088" HEIGHT="701">
<COMPONENT_NODE TOP_INFO="0">
<COMPONENT_INFO NAME="Memory Map" OWNER="MemoryMapPlugin" TITLE="Memory Map" ACTIVE="false" GROUP="Default" INSTANCE_ID="3336092379265745728" />
</COMPONENT_NODE>
</WINDOW_NODE>
<WINDOW_NODE X_POS="383" Y_POS="7" WIDTH="1020" HEIGHT="1038">
<COMPONENT_NODE TOP_INFO="0">
<COMPONENT_INFO NAME="Function Graph" OWNER="FunctionGraphPlugin" TITLE="Function Graph" ACTIVE="false" GROUP="Function Graph" INSTANCE_ID="3336092379374797646" />
</COMPONENT_NODE>
</WINDOW_NODE>
<WINDOW_NODE X_POS="550" Y_POS="206" WIDTH="655" HEIGHT="509">
<COMPONENT_NODE TOP_INFO="0">
<COMPONENT_INFO NAME="Register Manager" OWNER="RegisterPlugin" TITLE="Register Manager" ACTIVE="false" GROUP="Default" INSTANCE_ID="3336092379374797637" />
</COMPONENT_NODE>
</WINDOW_NODE>
<WINDOW_NODE X_POS="287" Y_POS="186" WIDTH="1424" HEIGHT="666">
<SPLIT_NODE WIDTH="1408" HEIGHT="557" DIVIDER_LOCATION="573" ORIENTATION="HORIZONTAL">
<COMPONENT_NODE TOP_INFO="0">
<COMPONENT_INFO NAME="Symbol Table" OWNER="SymbolTablePlugin" TITLE="Symbol Table" ACTIVE="false" GROUP="symbolTable" INSTANCE_ID="3336092379374797644" />
</COMPONENT_NODE>
<COMPONENT_NODE TOP_INFO="0">
<COMPONENT_INFO NAME="Symbol References" OWNER="SymbolTablePlugin" TITLE="Symbol References" ACTIVE="false" GROUP="symbolTable" INSTANCE_ID="3336092379374797645" />
</COMPONENT_NODE>
</SPLIT_NODE>
</WINDOW_NODE>
<WINDOW_NODE X_POS="-1" Y_POS="-1" WIDTH="0" HEIGHT="0">
<COMPONENT_NODE TOP_INFO="0">
<COMPONENT_INFO NAME="Checksum Generator" OWNER="ComputeChecksumsPlugin" TITLE="Checksum Generator" ACTIVE="false" GROUP="Default" INSTANCE_ID="3336092370730337114" />
</COMPONENT_NODE>
</WINDOW_NODE>
<WINDOW_NODE X_POS="750" Y_POS="402" WIDTH="420" HEIGHT="584">
<COMPONENT_NODE TOP_INFO="0">
<COMPONENT_INFO NAME="Function Tags" OWNER="FunctionTagPlugin" TITLE="Function Tags" ACTIVE="false" GROUP="Default" INSTANCE_ID="3336092379265745730" />
</COMPONENT_NODE>
</WINDOW_NODE>
<WINDOW_NODE X_POS="-1" Y_POS="-1" WIDTH="0" HEIGHT="0">
<COMPONENT_NODE TOP_INFO="0">
<COMPONENT_INFO NAME="Comment Window" OWNER="CommentWindowPlugin" TITLE="Comments" ACTIVE="false" GROUP="Default" INSTANCE_ID="3336092379374797643" />
</COMPONENT_NODE>
</WINDOW_NODE>
<WINDOW_NODE X_POS="-1" Y_POS="-1" WIDTH="0" HEIGHT="0">
<COMPONENT_NODE TOP_INFO="0">
<COMPONENT_INFO NAME="Python" OWNER="InterpreterPanelPlugin" TITLE="Python" ACTIVE="false" GROUP="Default" INSTANCE_ID="3336092379374797639" />
</COMPONENT_NODE>
</WINDOW_NODE>
<WINDOW_NODE X_POS="450" Y_POS="0" WIDTH="1020" HEIGHT="1086">
<COMPONENT_NODE TOP_INFO="0">
<COMPONENT_INFO NAME="Function Call Graph" OWNER="FunctionCallGraphPlugin" TITLE="Function Call Graph" ACTIVE="false" GROUP="Function Call Graph" INSTANCE_ID="3336092379374797638" />
</COMPONENT_NODE>
</WINDOW_NODE>
<WINDOW_NODE X_POS="285" Y_POS="93" WIDTH="1351" HEIGHT="854">
<COMPONENT_NODE TOP_INFO="0">
<COMPONENT_INFO NAME="Structure Editor" OWNER="DataTypeManagerPlugin" TITLE="Structure Editor - REPLAY_SAVE_HEADER (DRIVER2_ITALIAN.ELF)" ACTIVE="false" GROUP="Default" INSTANCE_ID="3334463969144387048" />
</COMPONENT_NODE>
</WINDOW_NODE>
<WINDOW_NODE X_POS="12" Y_POS="131" WIDTH="857" HEIGHT="764">
<COMPONENT_NODE TOP_INFO="0">
<COMPONENT_INFO NAME="Location References Provider" OWNER="LocationReferencesPlugin" TITLE="References to padid.33 - 1 locations" ACTIVE="false" GROUP="Default" INSTANCE_ID="3334267665006419688" />
</COMPONENT_NODE>
</WINDOW_NODE>
<WINDOW_NODE X_POS="393" Y_POS="582" WIDTH="836" HEIGHT="313">
<COMPONENT_NODE TOP_INFO="0">
<COMPONENT_INFO NAME="References Editor " OWNER="ReferencesPlugin" TITLE="References Editor @ 00041a5c (DRIVER2_ITALIAN.ELF)" ACTIVE="false" GROUP="Default" INSTANCE_ID="3328640692750989492" />
</COMPONENT_NODE>
</WINDOW_NODE>
<WINDOW_NODE X_POS="764" Y_POS="459" WIDTH="410" HEIGHT="302">
<COMPONENT_NODE TOP_INFO="0">
<COMPONENT_INFO NAME="Enum Editor" OWNER="DataTypeManagerPlugin" TITLE="Enum Editor - CDTYPE (DRIVER2_ITALIAN.ELF)" ACTIVE="false" GROUP="Default" INSTANCE_ID="3324308891244826744" />
</COMPONENT_NODE>
</WINDOW_NODE>
<WINDOW_NODE X_POS="696" Y_POS="112" WIDTH="870" HEIGHT="787">
<COMPONENT_NODE TOP_INFO="0">
<COMPONENT_INFO NAME="Stack Editor" OWNER="StackEditorManagerPlugin" TITLE="Stack Editor - CreateCivCarWotDrivesABitThenStops (DRIVER2_ITALIAN.ELF)" ACTIVE="false" GROUP="Default" INSTANCE_ID="3335700258060672092" />
</COMPONENT_NODE>
</WINDOW_NODE>
<WINDOW_NODE X_POS="0" Y_POS="0" WIDTH="472" HEIGHT="536">
<COMPONENT_NODE TOP_INFO="0">
<COMPONENT_INFO NAME="Operands" OWNER="TableServicePlugin" TITLE="Operand References for 0004e3f8" ACTIVE="false" GROUP="Default" INSTANCE_ID="3330613345743735482" />
</COMPONENT_NODE>
</WINDOW_NODE>
<WINDOW_NODE X_POS="368" Y_POS="378" WIDTH="878" HEIGHT="514">
<COMPONENT_NODE TOP_INFO="0">
<COMPONENT_INFO NAME="Union Editor" OWNER="DataTypeManagerPlugin" TITLE="Union Editor - RigidBodyState (DRIVER2_ITALIAN.ELF)" ACTIVE="false" GROUP="Default" INSTANCE_ID="3328503434454314670" />
</COMPONENT_NODE>
</WINDOW_NODE>
<WINDOW_NODE X_POS="524" Y_POS="245" WIDTH="870" HEIGHT="617">
<COMPONENT_NODE TOP_INFO="0">
<COMPONENT_INFO NAME="Instruction Info" OWNER="ShowInstructionInfoPlugin" TITLE="Instruction Info: Address 00041ac0" ACTIVE="false" GROUP="Default" INSTANCE_ID="3328641676944423089" />
</COMPONENT_NODE>
</WINDOW_NODE>
</ROOT_NODE>
<DATA_STATE>
<PLUGIN NAME="ProgramManagerPlugin">
<STATE NAME="_LINE_NUM" TYPE="int" VALUE="6" />
<STATE NAME="_TOKEN_TEXT" TYPE="string" VALUE="BOMB" />
<STATE NAME="_CHAR_POS" TYPE="int" VALUE="0" />
<STATE NAME="_ADDRESS" TYPE="string" VALUE="0001f570" />
<STATE NAME="PATHNAME_0" TYPE="string" VALUE="/DRIVER2_ITALIAN.ELF" />
<STATE NAME="CURRENT_FILE" TYPE="string" VALUE="DRIVER2_ITALIAN.ELF" />
<STATE NAME="PROJECT_NAME_0" TYPE="string" VALUE="REDRIVER_2" />
<STATE NAME="NUM_PROGRAMS" TYPE="int" VALUE="1" />
<STATE NAME="VERSION_0" TYPE="int" VALUE="-1" />
<STATE NAME="_FUNCTION_ENTRY" TYPE="string" VALUE="0001f570" />
<STATE NAME="_CLASSNAME" TYPE="string" VALUE="ghidra.app.decompiler.DecompilerLocation" />
<STATE NAME="_COLUMN" TYPE="int" VALUE="0" />
<STATE NAME="_CHAR_OFFSET" TYPE="int" VALUE="0" />
<STATE NAME="LOCATION_0" TYPE="string" VALUE="H:\Projects\driver2_disasm" />
<STATE NAME="_ROW" TYPE="int" VALUE="0" />
<STATE NAME="_BYTE_ADDR" TYPE="string" VALUE="0001f570" />
</PLUGIN>
<PLUGIN NAME="DecompilePlugin">
<STATE NAME="NAV_ID" TYPE="long" VALUE="3336092370730337112" />
<STATE NAME="_LINE_NUM" TYPE="int" VALUE="6" />
<STATE NAME="_TOKEN_TEXT" TYPE="string" VALUE="BOMB" />
<STATE NAME="_CHAR_POS" TYPE="int" VALUE="0" />
<STATE NAME="_ADDRESS" TYPE="string" VALUE="0001f570" />
<STATE NAME="Num Disconnected" TYPE="int" VALUE="0" />
<STATE NAME="_FUNCTION_ENTRY" TYPE="string" VALUE="0001f570" />
<STATE NAME="_CLASSNAME" TYPE="string" VALUE="ghidra.app.decompiler.DecompilerLocation" />
<STATE NAME="_COLUMN" TYPE="int" VALUE="0" />
<STATE NAME="_CHAR_OFFSET" TYPE="int" VALUE="0" />
<STATE NAME="_ROW" TYPE="int" VALUE="0" />
<STATE NAME="_BYTE_ADDR" TYPE="string" VALUE="0001f570" />
<STATE NAME="INDEX" TYPE="int" VALUE="0" />
<STATE NAME="Y_OFFSET" TYPE="int" VALUE="0" />
</PLUGIN>
<PLUGIN NAME="ByteViewerPlugin">
<STATE NAME="X Offset" TYPE="int" VALUE="0" />
<STATE NAME="NAV_ID" TYPE="long" VALUE="3336092370730337113" />
<STATE NAME="Block Column" TYPE="int" VALUE="0" />
<STATE NAME="Y Offset" TYPE="int" VALUE="0" />
<STATE NAME="Num Disconnected" TYPE="int" VALUE="0" />
<STATE NAME="Block Num" TYPE="int" VALUE="0" />
<STATE NAME="Index" TYPE="int" VALUE="0" />
<STATE NAME="Block Offset" TYPE="string" VALUE="0" />
</PLUGIN>
<PLUGIN NAME="CodeBrowserPlugin">
<STATE NAME="NAV_ID" TYPE="long" VALUE="3336092370730337115" />
<STATE NAME="_CLASSNAME" TYPE="string" VALUE="ghidra.program.util.AddressFieldLocation" />
<STATE NAME="_COLUMN" TYPE="int" VALUE="0" />
<STATE NAME="_CHAR_OFFSET" TYPE="int" VALUE="0" />
<STATE NAME="_ADDRESS" TYPE="string" VALUE="0001f570" />
<STATE NAME="_ROW" TYPE="int" VALUE="0" />
<STATE NAME="_BYTE_ADDR" TYPE="string" VALUE="0001f570" />
<STATE NAME="Num Disconnected" TYPE="int" VALUE="0" />
<STATE NAME="INDEX" TYPE="int" VALUE="128332" />
<STATE NAME="Y_OFFSET" TYPE="int" VALUE="-11" />
<STATE NAME="_ADDR_REP" TYPE="string" VALUE="0001f570" />
</PLUGIN>
<PLUGIN NAME="ProgramTreePlugin">
<STATE NAME="NavigationToggleState" TYPE="boolean" VALUE="false" />
<ARRAY NAME="GroupNameProgram Tree0" TYPE="string">
<A VALUE="DRIVER2_ITALIAN.ELF" />
</ARRAY>
<STATE NAME="Current Viewname" TYPE="string" VALUE="Program Tree" />
<STATE NAME="NumberOfViews" TYPE="int" VALUE="1" />
<STATE NAME="NumberOfGroupsProgram Tree" TYPE="int" VALUE="1" />
<STATE NAME="TreeName-0" TYPE="string" VALUE="Program Tree" />
</PLUGIN>
<PLUGIN NAME="FunctionGraphPlugin">
<STATE NAME="NAV_ID" TYPE="long" VALUE="3336092379374797646" />
<ENUM NAME="EDGE_HOVER_HIGHLIGHT" TYPE="enum" CLASS="ghidra.app.plugin.core.functiongraph.EdgeDisplayType" VALUE="ScopedFlowsFromVertex" />
<STATE NAME="DISPLAY_SATELLITE" TYPE="boolean" VALUE="true" />
<STATE NAME="Disconnected Count" TYPE="int" VALUE="0" />
<STATE NAME="LAYOUT_NAME" TYPE="string" VALUE="ghidra.app.plugin.core.functiongraph.graph.layout.DecompilerNestedLayoutProvider" />
<STATE NAME="DISPLAY_POPUPS" TYPE="boolean" VALUE="true" />
<ENUM NAME="EDGE_SELECTION_HIGHLIGHT" TYPE="enum" CLASS="ghidra.app.plugin.core.functiongraph.EdgeDisplayType" VALUE="AllCycles" />
<STATE NAME="DOCK_SATELLITE" TYPE="boolean" VALUE="true" />
</PLUGIN>
<PLUGIN NAME="NavigationHistoryPlugin">
<XML NAME="HISTORY_LIST_0">
<SAVE_STATE>
<XML NAME="MEMENTO_DATA2">
<SAVE_STATE>
<STATE NAME="_FUNC_ADDRESS" TYPE="string" VALUE="0002a4c4" />
<STATE NAME="_RETURN_TYPE" TYPE="string" VALUE="void" />
<STATE NAME="_ADDRESS" TYPE="string" VALUE="0002a4c4" />
<XML NAME="MEMENTO0">
<SAVE_STATE>
<STATE NAME="NAV_ID" TYPE="long" VALUE="3336092370730337115" />
<STATE NAME="_FUNC_ADDRESS" TYPE="string" VALUE="0002a4c4" />
<STATE NAME="_RETURN_TYPE" TYPE="string" VALUE="void" />
<STATE NAME="_ADDRESS" TYPE="string" VALUE="0002a4c4" />
<STATE NAME="MEMENTO_CLASS" TYPE="string" VALUE="ghidra.app.plugin.core.codebrowser.CodeViewerLocationMemento" />
<STATE NAME="CURSOR_OFFSET" TYPE="int" VALUE="367" />
<STATE NAME="PROGRAM_ID" TYPE="long" VALUE="3322667047346813432" />
<STATE NAME="_SIGNATURE" TYPE="string" VALUE="void __stdcall AttemptUnPark(_CAR_DATA * cp)" />
<STATE NAME="_CLASSNAME" TYPE="string" VALUE="ghidra.program.util.FunctionReturnTypeFieldLocation" />
<STATE NAME="_COLUMN" TYPE="int" VALUE="0" />
<STATE NAME="_CHAR_OFFSET" TYPE="int" VALUE="0" />
<STATE NAME="_ROW" TYPE="int" VALUE="0" />
<STATE NAME="_BYTE_ADDR" TYPE="string" VALUE="0002a4c4" />
<STATE NAME="PROGRAM_PATH_" TYPE="string" VALUE="REDRIVER_2:/DRIVER2_ITALIAN.ELF" />
</SAVE_STATE>
</XML>
<STATE NAME="MEMENTO_CLASS" TYPE="string" VALUE="ghidra.app.plugin.core.gotoquery.DefaultNavigatableLocationMemento" />
<STATE NAME="PROGRAM_ID" TYPE="long" VALUE="3322667047346813432" />
<STATE NAME="_SIGNATURE" TYPE="string" VALUE="void AttemptUnPark(_CAR_DATA * cp)" />
<STATE NAME="_CLASSNAME" TYPE="string" VALUE="ghidra.program.util.FunctionReturnTypeFieldLocation" />
<STATE NAME="_COLUMN" TYPE="int" VALUE="0" />
<STATE NAME="_CHAR_OFFSET" TYPE="int" VALUE="0" />
<STATE NAME="_ROW" TYPE="int" VALUE="0" />
<STATE NAME="_BYTE_ADDR" TYPE="string" VALUE="0002a4c4" />
<STATE NAME="NUM_MEMENTOS" TYPE="int" VALUE="1" />
<STATE NAME="PROGRAM_PATH_" TYPE="string" VALUE="REDRIVER_2:/DRIVER2_ITALIAN.ELF" />
</SAVE_STATE>
</XML>
<STATE NAME="NAV_ID" TYPE="long" VALUE="-1" />
<XML NAME="MEMENTO_DATA3">
<SAVE_STATE>
<STATE NAME="_LINE_NUM" TYPE="int" VALUE="4" />
<STATE NAME="_TOKEN_TEXT" TYPE="string" VALUE="byte" />
<STATE NAME="_CHAR_POS" TYPE="int" VALUE="0" />
<XML NAME="MEMENTO1">
<SAVE_STATE>
<STATE NAME="NAV_ID" TYPE="long" VALUE="3336092370730337112" />
<STATE NAME="_LINE_NUM" TYPE="int" VALUE="4" />
<STATE NAME="_TOKEN_TEXT" TYPE="string" VALUE="byte" />
<STATE NAME="_CHAR_POS" TYPE="int" VALUE="0" />
<STATE NAME="_ADDRESS" TYPE="string" VALUE="0002a4c4" />
<STATE NAME="MEMENTO_CLASS" TYPE="string" VALUE="ghidra.app.plugin.core.decompile.DecompilerLocationMemento" />
<STATE NAME="PROGRAM_ID" TYPE="long" VALUE="3322667047346813432" />
<STATE NAME="_FUNCTION_ENTRY" TYPE="string" VALUE="0002a4c4" />
<STATE NAME="_CLASSNAME" TYPE="string" VALUE="ghidra.app.decompiler.DecompilerLocation" />
<STATE NAME="_COLUMN" TYPE="int" VALUE="0" />
<STATE NAME="_CHAR_OFFSET" TYPE="int" VALUE="0" />
<STATE NAME="_ROW" TYPE="int" VALUE="0" />
<STATE NAME="_BYTE_ADDR" TYPE="string" VALUE="0002a4c4" />
<STATE NAME="PROGRAM_PATH_" TYPE="string" VALUE="REDRIVER_2:/DRIVER2_ITALIAN.ELF" />
<STATE NAME="INDEX" TYPE="int" VALUE="0" />
<STATE NAME="X_OFFSET" TYPE="int" VALUE="0" />
<STATE NAME="Y_OFFSET" TYPE="int" VALUE="0" />
</SAVE_STATE>
</XML>
<STATE NAME="_ADDRESS" TYPE="string" VALUE="0002a4c4" />
<XML NAME="MEMENTO0">
<SAVE_STATE>
<STATE NAME="NAV_ID" TYPE="long" VALUE="3336092370730337115" />
<STATE NAME="_CLASSNAME" TYPE="string" VALUE="ghidra.program.util.AddressFieldLocation" />
<STATE NAME="_COLUMN" TYPE="int" VALUE="0" />
<STATE NAME="_CHAR_OFFSET" TYPE="int" VALUE="0" />
<STATE NAME="_ADDRESS" TYPE="string" VALUE="0002a4c4" />
<STATE NAME="_ROW" TYPE="int" VALUE="0" />
<STATE NAME="_BYTE_ADDR" TYPE="string" VALUE="0002a4c4" />
<STATE NAME="MEMENTO_CLASS" TYPE="string" VALUE="ghidra.app.plugin.core.codebrowser.CodeViewerLocationMemento" />
<STATE NAME="PROGRAM_PATH_" TYPE="string" VALUE="REDRIVER_2:/DRIVER2_ITALIAN.ELF" />
<STATE NAME="_ADDR_REP" TYPE="string" VALUE="0002a4c4" />
<STATE NAME="CURSOR_OFFSET" TYPE="int" VALUE="367" />
<STATE NAME="PROGRAM_ID" TYPE="long" VALUE="3322667047346813432" />
</SAVE_STATE>
</XML>
<STATE NAME="MEMENTO_CLASS" TYPE="string" VALUE="ghidra.app.plugin.core.gotoquery.DefaultNavigatableLocationMemento" />
<STATE NAME="PROGRAM_ID" TYPE="long" VALUE="3322667047346813432" />
<STATE NAME="_FUNCTION_ENTRY" TYPE="string" VALUE="0002a4c4" />
<STATE NAME="_CLASSNAME" TYPE="string" VALUE="ghidra.app.decompiler.DecompilerLocation" />
<STATE NAME="_COLUMN" TYPE="int" VALUE="0" />
<STATE NAME="_CHAR_OFFSET" TYPE="int" VALUE="0" />
<STATE NAME="_ROW" TYPE="int" VALUE="0" />
<STATE NAME="_BYTE_ADDR" TYPE="string" VALUE="0002a4c4" />
<STATE NAME="NUM_MEMENTOS" TYPE="int" VALUE="2" />
<STATE NAME="PROGRAM_PATH_" TYPE="string" VALUE="REDRIVER_2:/DRIVER2_ITALIAN.ELF" />
</SAVE_STATE>
</XML>
<STATE NAME="LOCATION_COUNT" TYPE="int" VALUE="9" />
<XML NAME="MEMENTO_DATA0">
<SAVE_STATE>
<ARRAY NAME="_COMMENT" TYPE="string" />
<STATE NAME="_ADDRESS" TYPE="string" VALUE="00000000" />
<XML NAME="MEMENTO0">
<SAVE_STATE>
<STATE NAME="NAV_ID" TYPE="long" VALUE="3336092370730337115" />
<ARRAY NAME="_COMMENT" TYPE="string" />
<STATE NAME="_ADDRESS" TYPE="string" VALUE="00000000" />
<STATE NAME="MEMENTO_CLASS" TYPE="string" VALUE="ghidra.app.plugin.core.codebrowser.CodeViewerLocationMemento" />
<STATE NAME="CURSOR_OFFSET" TYPE="int" VALUE="0" />
<STATE NAME="PROGRAM_ID" TYPE="long" VALUE="3322667047346813432" />
<STATE NAME="_CLASSNAME" TYPE="string" VALUE="ghidra.program.util.MemoryBlockStartFieldLocation" />
<STATE NAME="_COLUMN" TYPE="int" VALUE="0" />
<STATE NAME="_CHAR_OFFSET" TYPE="int" VALUE="0" />
<STATE NAME="_ROW" TYPE="int" VALUE="0" />
<STATE NAME="_BYTE_ADDR" TYPE="string" VALUE="00000000" />
<STATE NAME="PROGRAM_PATH_" TYPE="string" VALUE="REDRIVER_2:/DRIVER2_ITALIAN.ELF" />
<STATE NAME="_TYPE" TYPE="int" VALUE="-1" />
</SAVE_STATE>
</XML>
<STATE NAME="MEMENTO_CLASS" TYPE="string" VALUE="ghidra.app.plugin.core.gotoquery.DefaultNavigatableLocationMemento" />
<STATE NAME="PROGRAM_ID" TYPE="long" VALUE="3322667047346813432" />
<STATE NAME="_CLASSNAME" TYPE="string" VALUE="ghidra.program.util.MemoryBlockStartFieldLocation" />
<STATE NAME="_COLUMN" TYPE="int" VALUE="0" />
<STATE NAME="_CHAR_OFFSET" TYPE="int" VALUE="0" />
<STATE NAME="_ROW" TYPE="int" VALUE="0" />
<STATE NAME="_BYTE_ADDR" TYPE="string" VALUE="00000000" />
<STATE NAME="NUM_MEMENTOS" TYPE="int" VALUE="1" />
<STATE NAME="PROGRAM_PATH_" TYPE="string" VALUE="REDRIVER_2:/DRIVER2_ITALIAN.ELF" />
<STATE NAME="_TYPE" TYPE="int" VALUE="-1" />
</SAVE_STATE>
</XML>
<STATE NAME="MEMENTO_CLASS1" TYPE="string" VALUE="ghidra.app.plugin.core.gotoquery.DefaultNavigatableLocationMemento" />
<STATE NAME="MEMENTO_CLASS0" TYPE="string" VALUE="ghidra.app.plugin.core.gotoquery.DefaultNavigatableLocationMemento" />
<XML NAME="MEMENTO_DATA1">
<SAVE_STATE>
<STATE NAME="_FUNC_ADDRESS" TYPE="string" VALUE="0010042c" />
<STATE NAME="_RETURN_TYPE" TYPE="string" VALUE="uint" />
<STATE NAME="_ADDRESS" TYPE="string" VALUE="0010042c" />
<XML NAME="MEMENTO0">
<SAVE_STATE>
<STATE NAME="NAV_ID" TYPE="long" VALUE="3336092370730337115" />
<STATE NAME="_ADDRESS" TYPE="string" VALUE="0010042c" />
<STATE NAME="MEMENTO_CLASS" TYPE="string" VALUE="ghidra.app.plugin.core.codebrowser.CodeViewerLocationMemento" />
<STATE NAME="CURSOR_OFFSET" TYPE="int" VALUE="367" />
<STATE NAME="PROGRAM_ID" TYPE="long" VALUE="3322667047346813432" />
<STATE NAME="_CLASSNAME" TYPE="string" VALUE="ghidra.program.util.AddressFieldLocation" />
<STATE NAME="_COLUMN" TYPE="int" VALUE="0" />
<STATE NAME="_CHAR_OFFSET" TYPE="int" VALUE="0" />
<STATE NAME="_ROW" TYPE="int" VALUE="0" />
<STATE NAME="_BYTE_ADDR" TYPE="string" VALUE="0010042c" />
<STATE NAME="PROGRAM_PATH_" TYPE="string" VALUE="REDRIVER_2:/DRIVER2_ITALIAN.ELF" />
<ARRAY NAME="_COMP_PATH" TYPE="int">
<A VALUE="20524" />
</ARRAY>
<STATE NAME="_ADDR_REP" TYPE="string" VALUE="0010042c" />
</SAVE_STATE>
</XML>
<STATE NAME="MEMENTO_CLASS" TYPE="string" VALUE="ghidra.app.plugin.core.gotoquery.DefaultNavigatableLocationMemento" />
<STATE NAME="PROGRAM_ID" TYPE="long" VALUE="3322667047346813432" />
<STATE NAME="_SIGNATURE" TYPE="string" VALUE="uint CardFormatted__3PADi(PAD * this, int slot)" />
<STATE NAME="_CLASSNAME" TYPE="string" VALUE="ghidra.program.util.FunctionReturnTypeFieldLocation" />
<STATE NAME="_COLUMN" TYPE="int" VALUE="0" />
<STATE NAME="_CHAR_OFFSET" TYPE="int" VALUE="0" />
<STATE NAME="_ROW" TYPE="int" VALUE="0" />
<STATE NAME="_BYTE_ADDR" TYPE="string" VALUE="0010042c" />
<STATE NAME="NUM_MEMENTOS" TYPE="int" VALUE="1" />
<STATE NAME="PROGRAM_PATH_" TYPE="string" VALUE="REDRIVER_2:/DRIVER2_ITALIAN.ELF" />
</SAVE_STATE>
</XML>
<XML NAME="MEMENTO_DATA6">
<SAVE_STATE>
<STATE NAME="_FUNC_ADDRESS" TYPE="string" VALUE="0001f570" />
<STATE NAME="_RETURN_TYPE" TYPE="string" VALUE="void" />
<XML NAME="MEMENTO1">
<SAVE_STATE>
<STATE NAME="NAV_ID" TYPE="long" VALUE="3336092370730337112" />
<STATE NAME="_LINE_NUM" TYPE="int" VALUE="4" />
<STATE NAME="_TOKEN_TEXT" TYPE="string" VALUE="long" />
<STATE NAME="_CHAR_POS" TYPE="int" VALUE="0" />
<STATE NAME="_ADDRESS" TYPE="string" VALUE="0002b8e4" />
<STATE NAME="MEMENTO_CLASS" TYPE="string" VALUE="ghidra.app.plugin.core.decompile.DecompilerLocationMemento" />
<STATE NAME="PROGRAM_ID" TYPE="long" VALUE="3322667047346813432" />
<STATE NAME="_FUNCTION_ENTRY" TYPE="string" VALUE="0002b8e4" />
<STATE NAME="_CLASSNAME" TYPE="string" VALUE="ghidra.app.decompiler.DecompilerLocation" />
<STATE NAME="_COLUMN" TYPE="int" VALUE="0" />
<STATE NAME="_CHAR_OFFSET" TYPE="int" VALUE="0" />
<STATE NAME="_ROW" TYPE="int" VALUE="0" />
<STATE NAME="_BYTE_ADDR" TYPE="string" VALUE="0002b8e4" />
<STATE NAME="PROGRAM_PATH_" TYPE="string" VALUE="REDRIVER_2:/DRIVER2_ITALIAN.ELF" />
<STATE NAME="INDEX" TYPE="int" VALUE="0" />
<STATE NAME="X_OFFSET" TYPE="int" VALUE="0" />
<STATE NAME="Y_OFFSET" TYPE="int" VALUE="0" />
</SAVE_STATE>
</XML>
<STATE NAME="_ADDRESS" TYPE="string" VALUE="0001f570" />
<XML NAME="MEMENTO0">
<SAVE_STATE>
<STATE NAME="NAV_ID" TYPE="long" VALUE="3336092370730337115" />
<STATE NAME="_FUNC_ADDRESS" TYPE="string" VALUE="0001f570" />
<STATE NAME="_RETURN_TYPE" TYPE="string" VALUE="void" />
<STATE NAME="_ADDRESS" TYPE="string" VALUE="0001f570" />
<STATE NAME="MEMENTO_CLASS" TYPE="string" VALUE="ghidra.app.plugin.core.codebrowser.CodeViewerLocationMemento" />
<STATE NAME="CURSOR_OFFSET" TYPE="int" VALUE="367" />
<STATE NAME="PROGRAM_ID" TYPE="long" VALUE="3322667047346813432" />
<STATE NAME="_SIGNATURE" TYPE="string" VALUE="void InitThrownBombs(void)" />
<STATE NAME="_CLASSNAME" TYPE="string" VALUE="ghidra.program.util.FunctionReturnTypeFieldLocation" />
<STATE NAME="_COLUMN" TYPE="int" VALUE="0" />
<STATE NAME="_CHAR_OFFSET" TYPE="int" VALUE="0" />
<STATE NAME="_ROW" TYPE="int" VALUE="0" />
<STATE NAME="_BYTE_ADDR" TYPE="string" VALUE="0001f570" />
<STATE NAME="PROGRAM_PATH_" TYPE="string" VALUE="REDRIVER_2:/DRIVER2_ITALIAN.ELF" />
</SAVE_STATE>
</XML>
<STATE NAME="MEMENTO_CLASS" TYPE="string" VALUE="ghidra.app.plugin.core.gotoquery.DefaultNavigatableLocationMemento" />
<STATE NAME="PROGRAM_ID" TYPE="long" VALUE="3322667047346813432" />
<STATE NAME="_SIGNATURE" TYPE="string" VALUE="void InitThrownBombs(void)" />
<STATE NAME="_CLASSNAME" TYPE="string" VALUE="ghidra.program.util.FunctionReturnTypeFieldLocation" />
<STATE NAME="_COLUMN" TYPE="int" VALUE="0" />
<STATE NAME="_CHAR_OFFSET" TYPE="int" VALUE="0" />
<STATE NAME="_ROW" TYPE="int" VALUE="0" />
<STATE NAME="_BYTE_ADDR" TYPE="string" VALUE="0001f570" />
<STATE NAME="NUM_MEMENTOS" TYPE="int" VALUE="2" />
<STATE NAME="PROGRAM_PATH_" TYPE="string" VALUE="REDRIVER_2:/DRIVER2_ITALIAN.ELF" />
</SAVE_STATE>
</XML>
<STATE NAME="CURRENT_LOC_INDEX" TYPE="int" VALUE="8" />
<XML NAME="MEMENTO_DATA7">
<SAVE_STATE>
<STATE NAME="_LINE_NUM" TYPE="int" VALUE="12" />
<STATE NAME="_TOKEN_TEXT" TYPE="string" VALUE="BOMB_000aca68" />
<STATE NAME="_CHAR_POS" TYPE="int" VALUE="15" />
<XML NAME="MEMENTO1">
<SAVE_STATE>
<STATE NAME="NAV_ID" TYPE="long" VALUE="3336092370730337112" />
<STATE NAME="_LINE_NUM" TYPE="int" VALUE="12" />
<STATE NAME="_TOKEN_TEXT" TYPE="string" VALUE="BOMB_000aca68" />
<STATE NAME="_CHAR_POS" TYPE="int" VALUE="15" />
<STATE NAME="_ADDRESS" TYPE="string" VALUE="0001f584" />
<STATE NAME="MEMENTO_CLASS" TYPE="string" VALUE="ghidra.app.plugin.core.decompile.DecompilerLocationMemento" />
<STATE NAME="PROGRAM_ID" TYPE="long" VALUE="3322667047346813432" />
<STATE NAME="_FUNCTION_ENTRY" TYPE="string" VALUE="0001f570" />
<STATE NAME="_CLASSNAME" TYPE="string" VALUE="ghidra.app.decompiler.DecompilerLocation" />
<STATE NAME="_COLUMN" TYPE="int" VALUE="0" />
<STATE NAME="_CHAR_OFFSET" TYPE="int" VALUE="0" />
<STATE NAME="_ROW" TYPE="int" VALUE="0" />
<STATE NAME="_BYTE_ADDR" TYPE="string" VALUE="0001f584" />
<STATE NAME="PROGRAM_PATH_" TYPE="string" VALUE="REDRIVER_2:/DRIVER2_ITALIAN.ELF" />
<STATE NAME="INDEX" TYPE="int" VALUE="0" />
<STATE NAME="X_OFFSET" TYPE="int" VALUE="0" />
<STATE NAME="Y_OFFSET" TYPE="int" VALUE="0" />
</SAVE_STATE>
</XML>
<STATE NAME="_ADDRESS" TYPE="string" VALUE="0001f584" />
<XML NAME="MEMENTO0">
<SAVE_STATE>
<STATE NAME="NAV_ID" TYPE="long" VALUE="3336092370730337115" />
<STATE NAME="_CLASSNAME" TYPE="string" VALUE="ghidra.program.util.AddressFieldLocation" />
<STATE NAME="_COLUMN" TYPE="int" VALUE="0" />
<STATE NAME="_CHAR_OFFSET" TYPE="int" VALUE="0" />
<STATE NAME="_ADDRESS" TYPE="string" VALUE="0001f584" />
<STATE NAME="_ROW" TYPE="int" VALUE="0" />
<STATE NAME="_BYTE_ADDR" TYPE="string" VALUE="0001f584" />
<STATE NAME="MEMENTO_CLASS" TYPE="string" VALUE="ghidra.app.plugin.core.codebrowser.CodeViewerLocationMemento" />
<STATE NAME="PROGRAM_PATH_" TYPE="string" VALUE="REDRIVER_2:/DRIVER2_ITALIAN.ELF" />
<STATE NAME="_ADDR_REP" TYPE="string" VALUE="0001f584" />
<STATE NAME="CURSOR_OFFSET" TYPE="int" VALUE="583" />
<STATE NAME="PROGRAM_ID" TYPE="long" VALUE="3322667047346813432" />
</SAVE_STATE>
</XML>
<STATE NAME="MEMENTO_CLASS" TYPE="string" VALUE="ghidra.app.plugin.core.gotoquery.DefaultNavigatableLocationMemento" />
<STATE NAME="PROGRAM_ID" TYPE="long" VALUE="3322667047346813432" />
<STATE NAME="_FUNCTION_ENTRY" TYPE="string" VALUE="0001f570" />
<STATE NAME="_CLASSNAME" TYPE="string" VALUE="ghidra.app.decompiler.DecompilerLocation" />
<STATE NAME="_COLUMN" TYPE="int" VALUE="0" />
<STATE NAME="_CHAR_OFFSET" TYPE="int" VALUE="0" />
<STATE NAME="FOCUSED_NAV" TYPE="long" VALUE="3336092370730337112" />
<STATE NAME="_ROW" TYPE="int" VALUE="0" />
<STATE NAME="_BYTE_ADDR" TYPE="string" VALUE="0001f584" />
<STATE NAME="NUM_MEMENTOS" TYPE="int" VALUE="2" />
<STATE NAME="PROGRAM_PATH_" TYPE="string" VALUE="REDRIVER_2:/DRIVER2_ITALIAN.ELF" />
</SAVE_STATE>
</XML>
<XML NAME="MEMENTO_DATA4">
<SAVE_STATE>
<STATE NAME="_FUNC_ADDRESS" TYPE="string" VALUE="0002b8e4" />
<STATE NAME="_RETURN_TYPE" TYPE="string" VALUE="int" />
<XML NAME="MEMENTO1">
<SAVE_STATE>
<STATE NAME="NAV_ID" TYPE="long" VALUE="3336092370730337112" />
<STATE NAME="_LINE_NUM" TYPE="int" VALUE="4" />
<STATE NAME="_TOKEN_TEXT" TYPE="string" VALUE="byte" />
<STATE NAME="_CHAR_POS" TYPE="int" VALUE="0" />
<STATE NAME="_ADDRESS" TYPE="string" VALUE="0002a4c4" />
<STATE NAME="MEMENTO_CLASS" TYPE="string" VALUE="ghidra.app.plugin.core.decompile.DecompilerLocationMemento" />
<STATE NAME="PROGRAM_ID" TYPE="long" VALUE="3322667047346813432" />
<STATE NAME="_FUNCTION_ENTRY" TYPE="string" VALUE="0002a4c4" />
<STATE NAME="_CLASSNAME" TYPE="string" VALUE="ghidra.app.decompiler.DecompilerLocation" />
<STATE NAME="_COLUMN" TYPE="int" VALUE="0" />
<STATE NAME="_CHAR_OFFSET" TYPE="int" VALUE="0" />
<STATE NAME="_ROW" TYPE="int" VALUE="0" />
<STATE NAME="_BYTE_ADDR" TYPE="string" VALUE="0002a4c4" />
<STATE NAME="PROGRAM_PATH_" TYPE="string" VALUE="REDRIVER_2:/DRIVER2_ITALIAN.ELF" />
<STATE NAME="INDEX" TYPE="int" VALUE="0" />
<STATE NAME="X_OFFSET" TYPE="int" VALUE="0" />
<STATE NAME="Y_OFFSET" TYPE="int" VALUE="0" />
</SAVE_STATE>
</XML>
<STATE NAME="_ADDRESS" TYPE="string" VALUE="0002b8e4" />
<XML NAME="MEMENTO0">
<SAVE_STATE>
<STATE NAME="NAV_ID" TYPE="long" VALUE="3336092370730337115" />
<STATE NAME="_FUNC_ADDRESS" TYPE="string" VALUE="0002b8e4" />
<STATE NAME="_RETURN_TYPE" TYPE="string" VALUE="int" />
<STATE NAME="_ADDRESS" TYPE="string" VALUE="0002b8e4" />
<STATE NAME="MEMENTO_CLASS" TYPE="string" VALUE="ghidra.app.plugin.core.codebrowser.CodeViewerLocationMemento" />
<STATE NAME="CURSOR_OFFSET" TYPE="int" VALUE="367" />
<STATE NAME="PROGRAM_ID" TYPE="long" VALUE="3322667047346813432" />
<STATE NAME="_SIGNATURE" TYPE="string" VALUE="int __stdcall CivFindStation(_CAR_DATA * cp)" />
<STATE NAME="_CLASSNAME" TYPE="string" VALUE="ghidra.program.util.FunctionReturnTypeFieldLocation" />
<STATE NAME="_COLUMN" TYPE="int" VALUE="0" />
<STATE NAME="_CHAR_OFFSET" TYPE="int" VALUE="0" />
<STATE NAME="_ROW" TYPE="int" VALUE="0" />
<STATE NAME="_BYTE_ADDR" TYPE="string" VALUE="0002b8e4" />
<STATE NAME="PROGRAM_PATH_" TYPE="string" VALUE="REDRIVER_2:/DRIVER2_ITALIAN.ELF" />
</SAVE_STATE>
</XML>
<STATE NAME="MEMENTO_CLASS" TYPE="string" VALUE="ghidra.app.plugin.core.gotoquery.DefaultNavigatableLocationMemento" />
<STATE NAME="PROGRAM_ID" TYPE="long" VALUE="3322667047346813432" />
<STATE NAME="_SIGNATURE" TYPE="string" VALUE="int CivFindStation(_CAR_DATA * cp)" />
<STATE NAME="_CLASSNAME" TYPE="string" VALUE="ghidra.program.util.FunctionReturnTypeFieldLocation" />
<STATE NAME="_COLUMN" TYPE="int" VALUE="0" />
<STATE NAME="_CHAR_OFFSET" TYPE="int" VALUE="0" />
<STATE NAME="_ROW" TYPE="int" VALUE="0" />
<STATE NAME="_BYTE_ADDR" TYPE="string" VALUE="0002b8e4" />
<STATE NAME="NUM_MEMENTOS" TYPE="int" VALUE="2" />
<STATE NAME="PROGRAM_PATH_" TYPE="string" VALUE="REDRIVER_2:/DRIVER2_ITALIAN.ELF" />
</SAVE_STATE>
</XML>
<XML NAME="MEMENTO_DATA5">
<SAVE_STATE>
<STATE NAME="_LINE_NUM" TYPE="int" VALUE="4" />
<STATE NAME="_TOKEN_TEXT" TYPE="string" VALUE="long" />
<STATE NAME="_CHAR_POS" TYPE="int" VALUE="0" />
<XML NAME="MEMENTO1">
<SAVE_STATE>
<STATE NAME="NAV_ID" TYPE="long" VALUE="3336092370730337112" />
<STATE NAME="_LINE_NUM" TYPE="int" VALUE="4" />
<STATE NAME="_TOKEN_TEXT" TYPE="string" VALUE="long" />
<STATE NAME="_CHAR_POS" TYPE="int" VALUE="0" />
<STATE NAME="_ADDRESS" TYPE="string" VALUE="0002b8e4" />
<STATE NAME="MEMENTO_CLASS" TYPE="string" VALUE="ghidra.app.plugin.core.decompile.DecompilerLocationMemento" />
<STATE NAME="PROGRAM_ID" TYPE="long" VALUE="3322667047346813432" />
<STATE NAME="_FUNCTION_ENTRY" TYPE="string" VALUE="0002b8e4" />
<STATE NAME="_CLASSNAME" TYPE="string" VALUE="ghidra.app.decompiler.DecompilerLocation" />
<STATE NAME="_COLUMN" TYPE="int" VALUE="0" />
<STATE NAME="_CHAR_OFFSET" TYPE="int" VALUE="0" />
<STATE NAME="_ROW" TYPE="int" VALUE="0" />
<STATE NAME="_BYTE_ADDR" TYPE="string" VALUE="0002b8e4" />
<STATE NAME="PROGRAM_PATH_" TYPE="string" VALUE="REDRIVER_2:/DRIVER2_ITALIAN.ELF" />
<STATE NAME="INDEX" TYPE="int" VALUE="0" />
<STATE NAME="X_OFFSET" TYPE="int" VALUE="0" />
<STATE NAME="Y_OFFSET" TYPE="int" VALUE="0" />
</SAVE_STATE>
</XML>
<STATE NAME="_ADDRESS" TYPE="string" VALUE="0002b8e4" />
<XML NAME="MEMENTO0">
<SAVE_STATE>
<STATE NAME="NAV_ID" TYPE="long" VALUE="3336092370730337115" />
<STATE NAME="_CLASSNAME" TYPE="string" VALUE="ghidra.program.util.AddressFieldLocation" />
<STATE NAME="_COLUMN" TYPE="int" VALUE="0" />
<STATE NAME="_CHAR_OFFSET" TYPE="int" VALUE="0" />
<STATE NAME="_ADDRESS" TYPE="string" VALUE="0002b8e4" />
<STATE NAME="_ROW" TYPE="int" VALUE="0" />
<STATE NAME="_BYTE_ADDR" TYPE="string" VALUE="0002b8e4" />
<STATE NAME="MEMENTO_CLASS" TYPE="string" VALUE="ghidra.app.plugin.core.codebrowser.CodeViewerLocationMemento" />
<STATE NAME="PROGRAM_PATH_" TYPE="string" VALUE="REDRIVER_2:/DRIVER2_ITALIAN.ELF" />
<STATE NAME="_ADDR_REP" TYPE="string" VALUE="0002b8e4" />
<STATE NAME="CURSOR_OFFSET" TYPE="int" VALUE="367" />
<STATE NAME="PROGRAM_ID" TYPE="long" VALUE="3322667047346813432" />
</SAVE_STATE>
</XML>
<STATE NAME="MEMENTO_CLASS" TYPE="string" VALUE="ghidra.app.plugin.core.gotoquery.DefaultNavigatableLocationMemento" />
<STATE NAME="PROGRAM_ID" TYPE="long" VALUE="3322667047346813432" />
<STATE NAME="_FUNCTION_ENTRY" TYPE="string" VALUE="0002b8e4" />
<STATE NAME="_CLASSNAME" TYPE="string" VALUE="ghidra.app.decompiler.DecompilerLocation" />
<STATE NAME="_COLUMN" TYPE="int" VALUE="0" />
<STATE NAME="_CHAR_OFFSET" TYPE="int" VALUE="0" />
<STATE NAME="_ROW" TYPE="int" VALUE="0" />
<STATE NAME="_BYTE_ADDR" TYPE="string" VALUE="0002b8e4" />
<STATE NAME="NUM_MEMENTOS" TYPE="int" VALUE="2" />
<STATE NAME="PROGRAM_PATH_" TYPE="string" VALUE="REDRIVER_2:/DRIVER2_ITALIAN.ELF" />
</SAVE_STATE>
</XML>
<XML NAME="MEMENTO_DATA8">
<SAVE_STATE>
<XML NAME="MEMENTO1">
<SAVE_STATE>
<STATE NAME="NAV_ID" TYPE="long" VALUE="3336092370730337112" />
<STATE NAME="_LINE_NUM" TYPE="int" VALUE="12" />
<STATE NAME="_TOKEN_TEXT" TYPE="string" VALUE="BOMB_000aca68" />
<STATE NAME="_CHAR_POS" TYPE="int" VALUE="15" />
<STATE NAME="_ADDRESS" TYPE="string" VALUE="0001f584" />
<STATE NAME="MEMENTO_CLASS" TYPE="string" VALUE="ghidra.app.plugin.core.decompile.DecompilerLocationMemento" />
<STATE NAME="PROGRAM_ID" TYPE="long" VALUE="3322667047346813432" />
<STATE NAME="_FUNCTION_ENTRY" TYPE="string" VALUE="0001f570" />
<STATE NAME="_CLASSNAME" TYPE="string" VALUE="ghidra.app.decompiler.DecompilerLocation" />
<STATE NAME="_COLUMN" TYPE="int" VALUE="0" />
<STATE NAME="_CHAR_OFFSET" TYPE="int" VALUE="0" />
<STATE NAME="_ROW" TYPE="int" VALUE="0" />
<STATE NAME="_BYTE_ADDR" TYPE="string" VALUE="0001f584" />
<STATE NAME="PROGRAM_PATH_" TYPE="string" VALUE="REDRIVER_2:/DRIVER2_ITALIAN.ELF" />
<STATE NAME="INDEX" TYPE="int" VALUE="0" />
<STATE NAME="X_OFFSET" TYPE="int" VALUE="0" />
<STATE NAME="Y_OFFSET" TYPE="int" VALUE="0" />
</SAVE_STATE>
</XML>
<STATE NAME="_ADDRESS" TYPE="string" VALUE="000aca68" />
<XML NAME="MEMENTO0">
<SAVE_STATE>
<STATE NAME="NAV_ID" TYPE="long" VALUE="3336092370730337115" />
<STATE NAME="_ADDRESS" TYPE="string" VALUE="000aca68" />
<STATE NAME="MEMENTO_CLASS" TYPE="string" VALUE="ghidra.app.plugin.core.codebrowser.CodeViewerLocationMemento" />
<STATE NAME="CURSOR_OFFSET" TYPE="int" VALUE="367" />
<STATE NAME="PROGRAM_ID" TYPE="long" VALUE="3322667047346813432" />
<STATE NAME="_CLASSNAME" TYPE="string" VALUE="ghidra.program.util.AddressFieldLocation" />
<STATE NAME="_COLUMN" TYPE="int" VALUE="0" />
<STATE NAME="_CHAR_OFFSET" TYPE="int" VALUE="0" />
<STATE NAME="_ROW" TYPE="int" VALUE="0" />
<STATE NAME="_BYTE_ADDR" TYPE="string" VALUE="000aca68" />
<STATE NAME="PROGRAM_PATH_" TYPE="string" VALUE="REDRIVER_2:/DRIVER2_ITALIAN.ELF" />
<ARRAY NAME="_COMP_PATH" TYPE="int" />
<STATE NAME="_ADDR_REP" TYPE="string" VALUE="000aca68" />
</SAVE_STATE>
</XML>
<STATE NAME="MEMENTO_CLASS" TYPE="string" VALUE="ghidra.app.plugin.core.gotoquery.DefaultNavigatableLocationMemento" />
<STATE NAME="PROGRAM_ID" TYPE="long" VALUE="3322667047346813432" />
<STATE NAME="_CLASSNAME" TYPE="string" VALUE="ghidra.program.util.ProgramLocation" />
<STATE NAME="_COLUMN" TYPE="int" VALUE="0" />
<STATE NAME="_CHAR_OFFSET" TYPE="int" VALUE="0" />
<STATE NAME="FOCUSED_NAV" TYPE="long" VALUE="3336092370730337112" />
<STATE NAME="_ROW" TYPE="int" VALUE="0" />
<STATE NAME="_BYTE_ADDR" TYPE="string" VALUE="000aca68" />
<STATE NAME="NUM_MEMENTOS" TYPE="int" VALUE="2" />
<STATE NAME="PROGRAM_PATH_" TYPE="string" VALUE="REDRIVER_2:/DRIVER2_ITALIAN.ELF" />
</SAVE_STATE>
</XML>
<STATE NAME="MEMENTO_CLASS7" TYPE="string" VALUE="ghidra.app.plugin.core.gotoquery.DefaultNavigatableLocationMemento" />
<STATE NAME="MEMENTO_CLASS6" TYPE="string" VALUE="ghidra.app.plugin.core.gotoquery.DefaultNavigatableLocationMemento" />
<STATE NAME="MEMENTO_CLASS8" TYPE="string" VALUE="ghidra.app.plugin.core.gotoquery.DefaultNavigatableLocationMemento" />
<STATE NAME="MEMENTO_CLASS3" TYPE="string" VALUE="ghidra.app.plugin.core.gotoquery.DefaultNavigatableLocationMemento" />
<STATE NAME="MEMENTO_CLASS2" TYPE="string" VALUE="ghidra.app.plugin.core.gotoquery.DefaultNavigatableLocationMemento" />
<STATE NAME="MEMENTO_CLASS5" TYPE="string" VALUE="ghidra.app.plugin.core.gotoquery.DefaultNavigatableLocationMemento" />
<STATE NAME="MEMENTO_CLASS4" TYPE="string" VALUE="ghidra.app.plugin.core.gotoquery.DefaultNavigatableLocationMemento" />
</SAVE_STATE>
</XML>
<STATE NAME="LIST_COUNT" TYPE="int" VALUE="1" />
</PLUGIN>
</DATA_STATE>
</RUNNING_TOOL>
</WORKSPACE>
<WORKSPACE NAME="Workspace" ACTIVE="true" />
</TOOL_MANAGER>
</PROJECT>

View File

@ -0,0 +1,96 @@
#include "half_float.h"
half::half(const float x)
{
union
{
float floatI;
unsigned int i;
};
floatI = x;
// unsigned int i = *((unsigned int *) &x);
int e = ((i >> 23) & 0xFF) - 112;
int m = i & 0x007FFFFF;
sh = (i >> 16) & 0x8000;
if (e <= 0)
{
// Denorm
m = ((m | 0x00800000) >> (1 - e)) + 0x1000;
sh |= (m >> 13);
}
else if (e == 143)
{
sh |= 0x7C00;
if (m != 0)
{
// NAN
m >>= 13;
sh |= m | (m == 0);
}
}
else
{
m += 0x1000;
if (m & 0x00800000)
{
// Mantissa overflow
m = 0;
e++;
}
if (e >= 31)
{
// Exponent overflow
sh |= 0x7C00;
}
else
{
sh |= (e << 10) | (m >> 13);
}
}
}
half::half(const half& other)
{
sh = other.sh;
}
half::operator float() const
{
union
{
unsigned int s;
float result;
};
s = (sh & 0x8000) << 16;
unsigned int e = (sh >> 10) & 0x1F;
unsigned int m = sh & 0x03FF;
if (e == 0)
{
// +/- 0
if (m == 0) return result;
// Denorm
while ((m & 0x0400) == 0)
{
m += m;
e--;
}
e++;
m &= ~0x0400;
}
else if (e == 31)
{
// INF / NAN
s |= 0x7F800000 | (m << 13);
return result;
}
s |= ((e + 112) << 23) | (m << 13);
return result;
}

View File

@ -0,0 +1,20 @@
#ifndef HALF_FLOAT
#define HALF_FLOAT
struct half
{
unsigned short sh;
half() {};
half(const float x);
half(const half& other);
operator float() const;
half& operator=(const half& other)
{
sh = other.sh;
return *this;
}
};
#endif // HALF_FLOAT

View File

@ -315,6 +315,7 @@ void DrawTargetArrow(VECTOR *pos, ulong flags)
poly = (POLY_G3 *)current->primptr;
setPolyG3(poly);
setSemiTrans(poly, 1);
poly->r0 = 24;
poly->g0 = 24;