Sunday, November 5, 2017

A map to ff7.exe

Here is an exceprt from the program I use to compare the object files generated from my "decompiled code" with the original exe file. One line correspond to one source file.
__diffAt is the comparison function which takes 4 parameters:
  • the code segment address
  • the constant data address
  • the initialized data address
  • the object file path

When I could guess the object file name from the assembly code (originally through the __FILE__ macro) I kept this name. Otherwise I would name the file from the object code address prefixed with C_.


As you can see, most of the exe file is reversed now. Only the battle effects modules are still to be decompiled. And there are many of them. So it won't be for tomorrow.

Anyway I'm pretty happy with this "map" because it gives some clean view to the original exe file. You can see that there is a clean separation of the different parts of the file. For instance, the "highway minigame" files are contiguous, same for the "field" part, or the "world map" part.

Here it is, I hope you have fun with it !



 //--------------------
 //---- 0x00401000 ----
 //--------------------
// __diffAt(0x00401000, 0x007BA070,          0, OBJPATH "init.obj");//ok
// __diffAt(0x00401500, 0x007BA1A8, 0x007B63E0, OBJPATH "C_00401500.obj");//ok -- "swirl effect module"
// __diffAt(0x00402EF0, 0x007BA278, 0x007B6408, OBJPATH "C_00402EF0.obj");//ok -- "request CD"
// __diffAt(0x00404D80,          0, 0x007B6448, OBJPATH "C_00404D80.obj");//ok -- windows registry stuff
// __diffAt(0x00404E00, 0x007BA668, 0x007B6490, OBJPATH "C_00404E00.obj");//ok -- "Game Over"
// __diffAt(0x004067A0, 0x007BA738, 0x007B64A0, OBJPATH "C_004067A0.obj");//ok -- windows registry stuff
// __diffAt(0x00406D10, 0x007BA748, 0x007B6550, OBJPATH "initpath.obj");//ok[contains bug]
// __diffAt(0x00408010, 0x007BAB24, 0x007B6658, OBJPATH "main.obj");//ok
// __diffAt(0x0040A460,          0, 0x007B6730, OBJPATH "C_0040A460.obj");//ok -- windows registry stuff
// __diffAt(0x0040AAB0,          0, 0x007B6818, OBJPATH "C_0040AAB0.obj");//ok -- timeSetEvent related
// __diffAt(0x0040AC90, 0x007BAE80,          0, OBJPATH "sm_movie.obj");//ok
 //--------------------
 //---- 0x0040B400 ----
 //--------------------
 //        libc
 //--------------------
 //---- 0x00414EE0 ----
 //--------------------
// __diffAt(0x00414EE0,          0,          0, OBJPATH "C_00414EE0.obj");//ok -- movie related debug module
// __diffAt(0x00414F00, 0x007BF640, 0x007B7468, OBJPATH "movie.obj");//ok[using DXMEDIA 6]
// __diffAt(0x004186E0, 0x007C05B8,          0, OBJPATH "C_004186E0.obj");//ok
// __diffAt(0x00419210, 0x007C0A68, 0x007B7470, OBJPATH "smcdfile.obj");//ok
// __diffAt(0x00419360, 0x007C0AE8, 0x007B7478, OBJPATH "C_00419360.obj");//ok
// __diffAt(0x00419E50,          0,          0, OBJPATH "C_00419E50.obj");//ok -- part of gzip inflater?
// __diffAt(0x0041A090,          0,          0, OBJPATH "C_0041A090.obj");//ok -- used by SWIRL?
// __diffAt(0x0041A1B0,          0,          0, OBJPATH "C_0041A1B0.obj");//ok -- high-level input module
// __diffAt(0x0041B300, 0/*0x007C0AF0*/, 0x007B74B8, OBJPATH "Battle.obj");//hobo ok[data]
// __diffAt(0x0041CF10,          0,          0, OBJPATH "C_0041CF10.obj");//ok -- some inflate function
// __diffAt(0x0041D090, 0x00000000, 0x00000000, OBJPATH "C_0041D090.obj");//ok
// __diffAt(0x0041D300, 0x007C0D08,          0, OBJPATH "C_0041D300.obj");//ok -- inflate.cpp?
// __diffAt(0x0041EEA0, 0x007C0E84, 0x007B74D0, OBJPATH "input.obj");//ok
 //====---- BATTLE ----==== almost 300 files
// __diffAt(0x0041FA70, 0/*0x007C1028*/,          0, OBJPATH "C_0041FA70.obj");//hobo ok[data]
// __diffAt(0x00428500, 0x007C1FC8, 0x007B74E0, OBJPATH "b3ddata.obj");//ok
// __diffAt(0x00429AC0, 0x007C21C8, 0x007B74E4, OBJPATH "C_00429AC0.obj");//ok
// __diffAt(0x00430DD0,          0,          0, OBJPATH "C_00430DD0.obj");//ok
// __diffAt(0x00431890, 0x007C28C0,          0, OBJPATH "coloss.obj");//ok
// __diffAt(0x00431C80,          0,          0, OBJPATH "C_00431C80.obj");//ok
// __diffAt(0x00432040,          0,          0, OBJPATH "C_00432040.obj");//ok
// __diffAt(0x00432C60,          0,          0, OBJPATH "C_00432C60.obj");//ok
// __diffAt(0x00433020,          0,          0, OBJPATH "C_00433020.obj");//ok
// __diffAt(0x00433510, 0x007C2980, 0x007B74F0, OBJPATH "C_00433510.obj");//hobo ok[data duplicate problem]
// __diffAt(0x00434690, 0x007C2A00, 0x007B7500, OBJPATH "C_00434690.obj");//hobo ok[data duplicate problem]
// __diffAt(0x00435250,          0,          0, OBJPATH "C_00435250.obj");//ok
// __diffAt(0x00435770, 0x007C2ACC, 0x007B7510, OBJPATH "C_00435770.obj");//ok
// __diffAt(0x00436C30,          0,          0, OBJPATH "C_00436C30.obj");//ok
// __diffAt(0x004372B0,          0,          0, OBJPATH "C_004372B0.obj");//ok
// __diffAt(0x00437370, 0x007C2AD0,          0, OBJPATH "C_00437370.obj");//ok
// __diffAt(0x00437DB0,          0,          0, OBJPATH "C_00437DB0.obj");//ok
 //-- 284 files --
// __diffAt(0x00438610, 0x007C2AE0,          0, OBJPATH "C_00438610.obj");//ok "EFFECT/HITMARK"
// __diffAt(0x00438C80, 0x007C3248,          0, OBJPATH "C_00438C80.obj");//ok "EFFECT/S_BARIA"
// __diffAt(0x004390F0, 0x007C32D0,          0, OBJPATH "C_004390F0.obj");//ok "MAGIC/MGUN"
 //__diffAt(0x00439A00, 0x007C33A0,          0, OBJPATH "lasboss3.obj");//[TODO] "weapon/s_nova"
 //0x004429B0 "weapon/dia_u"
 //0x00444730 "weapon/weapon4"
 //0x00447AB0 "weapon/beam1"
 //0x00448A60 "weapon/weapon3"
 //0x0044A510 "weapon/weapon1" "C:\FF7\src\battle\yasui\sting.cpp"?
 //0x0044EC10 "WEAPON/WEAPON2"
// __diffAt(0x00452020, 0x007E2CA8,          0, OBJPATH "deadsef.obj");//ok "SUMMON/LASTBOSS"
 //0x004559B0 "SPECIAL/TOSEKI"
 //0x00457040 "SPECIAL/MAGEND"
 //0x00457410 "MAGIC/WALL"
 //0x00457A90 "SPECIAL/LASBOSS1"
 //0x0045A2C0 "LIMIT/S_GUARD"
 //0x0045ADF0 "LIMIT/DAICHI"
 //0x0045B8A0 "SPECIAL/PUNCH"
 //0x0045C030 "limit2/satan"
 //0x00461660 "limit2/night"
 //0x00463E50 "LIMIT2/SPARK"
 //0x004658A0 "ITEM/KEMURI"
 //0x00465B30 "ITEM/YAMABIKO"
 //0x00465F70 "LIMIT/A_MAX"
 //0x00466990 "LIMIT/HAZARD"
 //0x00467490 "LIMIT/HAMBLOW"
 //0x004685F0 "LIMIT/CATASTRO"
 //0x0046B6C0 "LIMIT/BUSIN"
 //0x0046E7F0 "LIMIT/HAKOU"
 //0x0046FF00 "LIMIT/S_BEAM"
 //0x00471FD0 "LIMIT/GLENADE"
 //0x00472EC0 "LIMIT/JAKI"
 //0x004739E0 "LIMIT/EVA"
 //__diffAt(0x004766C0, 0x00000000, 0x00000000, OBJPATH "C_004766C0.obj");//[TODO] "SUMMON/KNIGHTS"
 //0x00483520 "SUMMON/VAHAMUT3" "C:\FF7\src\Battle\yasui\vahamut0.cpp"?
 //0x0048C200 "SUMMON/VAHAMUT2"
 //0x004943E0 "LIMIT2/GAISEI"
 //0x00496B50 "LIMIT/RAKUIN"
 //0x00497790 "SUMMON/VAHAMUT"
 //__diffAt(0x0049B040, 0x00000000, 0x00000000, OBJPATH "C_0049B040.obj");//[TODO] "magic/brizag2"
 //0x0049FA40 "limit2/dise"
 //0x004A0A40 "SUMMON/odin1"
// __diffAt(0x004A5AC0, 0x00803E48,          0, OBJPATH "C_004A5AC0.obj");//ok "SUMMON/odin2"
 //0x004AAB50 "limit2/beast"
 //0x004AB910 "LIMIT/KODOU"
 //0x004AC3F0 "LIMIT/MIND"
 //0x004ACE20 "LIMIT2/HITUMETU"
 //0x004AD950 "LIMIT2/ISSHOKU"
 //0x004AE240 "LIMIT2/MATSURI"
 //0x004AE840 "LIMIT2/JINRAI"
 //0x004AEB60 "LIMIT3/RANNTOU"
 //0x004AF1E0 "LIMIT3/D_DIVE"
 //0x004AFD20 "LIMIT3/H_JUMP"
 //0x004B1800 "LIMIT3/D_M"
 //0x004B2A50 "LIMIT3/B_JUMP"
 //0x004B2F40 "LIMIT3/SINRA"
 //0x004B38A0 "LIMIT3/HIWIND"
 //0x004B46B0 "LIMIT2/MEIKYO"
 //0x004B5120 "LIMIT3/DYNAMITE"
 //0x004B62B0 "summon/hardeath"
 //0x004BE8A0 "limit2/garyoten"
 //0x004C15C0 "limit2/meteo_r"
 //0x004C3F80 "limit/lgirl"
 //0x004C4BE0 "LIMIT3/C_M"
 //0x004C6860 "limit3/e_r"
 //0x004C8200 "limit2/lunatic"
 //0x004C8E90 "limit3/s_d"
 //0x004CB120 "limit3/h_moon"
 //0x004CBDF0 "LIMIT2/TOYBOX"
 //0x004CCF30 "item/wp_bi"
 //0x004CD810 "item/wp_ke"
 //__diffAt(0x004CE0F0, 0x00000000, 0x00000000, OBJPATH "C_004CE0F0.obj");//[TODO] "item/wp_yu"
 //0x004CFEB0 "item/wp_si"
 //0x004D1B90 "item/wp_ea"
 //0x004D2830 "item/wp_ba"
 //0x004D36A0 "item/wp_cu"
 //0x004D3F10 "BLUE/KAENN"
 //0x004D4790 "MAGIC/FULL"
 //0x004D56B0 "SUMMON/tupon"
 //0x004DB2E0 "SPECIAL/TYOKYU"
 //0x004DCEB0 "SPECIAL/SYAKU"
 //0x004DE3E0 "SPECIAL/RE_DO"
 //0x004DF8F0 "SPECIAL/HADOHO"
 //0x004E0E40 "SPECIAL/SHIELD"
 //__diffAt(0x004E1580, 0x00000000, 0x00000000, OBJPATH "C_004E1580.obj");//[TODO] "limit2/tifa1"
 //0x004EA970 "limit3/sld_fang"
 //0x004ECE70 "special/joker2"
 //0x004EE870 "special/joker1"
 //0x004EF6A0 "SPECIAL/DIA2"
 //0x004F06F0 "SPECIAL/DIA1"
 //0x004F1E20 "SPECIAL/CLUB2"
 //0x004F4370 "SPECIAL/club1"
 //0x004F52D0 "special/heart2"
 //0x004F6AF0 "special/heart1"
 //0x004F7AF0 "SPECIAL/SPADE2"
 //0x004F8AD0 "SPECIAL/SPADE1"
 //0x004F97F0 "SUMMON/KJATA"
 //0x005013F0 "SUMMON/ALEXAND"
 //0x00507AF0 "SUMMON/CHOCO2"
 //0x005097C0 "SUMMON/CHOCO"
 //0x0050B850 "SPECIAL/HADO"
 //0x0050CD90 "SPECIAL/ENERGY"
 //0x0050E2B0 "SPECIAL/KAKUSAN"
 //0x0050F110 "SPECIAL/SAIKYO"
 //0x00510230 "SPECIAL/HO_DEN"
 //0x00511230 "special/s_bless"
 //0x005125E0 "SPECIAL/GESUI1"
 //0x005135B0 "SPECIAL/MIZUFUKI"
 //0x00514710 "ITEM/VEGET"
 //0x00515060 "SUMMON/FENIC"
 //0x005190F0 "special/korosi"
 //0x00519830 "SPECIAL/FROG"
 //0x0051A500 "SPECIAL/DAIONPA"
 //0x0051B250 "SPECIAL/RENMISA"
 //0x0051C410 "SPECIAL/SEKIKA"
 //0x0051E190 "SPECIAL/NAPARM"
 //0x0051F5F0 "SPECIAL/KONA"
 //0x00520290 "SPECIAL/PINK"
 //0x005212B0 "SPECIAL/JAMMER2"
 //0x00522010 "SPECIAL/JAMMER"
 //0x00522B00 "SPECIAL/HAKUGEK2"
 //0x00523850 "SPECIAL/HAKUGEK1"
 //0x005246A0 "SPECIAL/GAS"
 //0x00525190 "SPECIAL/SHOWER"
 //0x00525EC0 "SPECIAL/JIBASIRI"
 //0x00526DA0 "SPECIAL/TELE"
 //0x00528200 "SPECIAL/DENGEKI"
 //0x00528FF0 "SPECIAL/NADARE"
 //0x0052A550 "SPECIAL/ROKET"
 //0x0052B920 "SPECIAL/KOUDAN2"
 //0x0052CB40 "SPECIAL/KOUDAN1"
 //0x0052D8B0 "SPECIAL/REITO"
 //0x0052F170 "special/yami"
 //0x0052FE10 "special/renbaku"
 //0x005305F0 "special/zenbaku"
 //0x00530D30 "SPECIAL/UTAGOE"
 //0x005313F0 "special/daisenp"
 //0x00531FE0 "special/ayasii"
 //0x005324A0 "special/heatbu"
 //0x00532B10 "magic/seald"
 //0x00533920 "SPECIAL/MAGMA2"
 //0x00533FE0 "SPECIAL/HIKARI3"
 //0x00534710 "SPECIAL/HIKARI2"
 //0x00534E80 "SPECIAL/REIKI"
 //0x00535C30 "SPECIAL/KAEN2"
 //0x00536850 "SPECIAL/KAEN"
 //0x00537340 "SPECIAL/JIBAKU2"
 //0x00538480 "special/turara"
 //0x00539040 "SPECIAL/WLASER"
 //0x00539770 "SPECIAL/HAKAI"
 //0x00539B10 "SPECIAL/GEKI2"
 //0x0053B2B0 "SPECIAL/GEKI1"
 //0x0053BFA0 "SPECIAL/NETU"
 //0x0053CCD0 "SPECIAL/MAGMA"
 //0x0053D3D0 "SPECIAL/ONSEN"
 //0x0053DAA0 "special/sander"
 //0x0053EEC0 "SPECIAL/AWA2"
 //0x0053FE90 "SPECIAL/CHIKASUI"
 //0x00540500 "SPECIAL/KINZAN"
 //0x00540B10 "SPECIAL/SMOG"
 //0x00541810 "SPECIAL/TUNAMI"
 //0x005426E0 "SPECIAL/KAHUN"
 //0x005434E0 "special/toboe2"
 //0x00543D40 "SPECIAL/SCORP"
 //0x00544590 "SPECIAL/NOZAN"
 //0x005452E0 "SPECIAL/SAZAN"
 //0x00546030 "SPECIAL/KUEISA"
 //0x00547460 "SPECIAL/HUBUKI"
 //0x005482A0 "SPECIAL/DOKUEKI"
 //0x00548AC0 "SPECIAL/DOKUFUKI"
 //0x005493F0 "SPECIAL/OIL"
 //0x00549D50 "SPECIAL/NONOSI"
 //0x0054B150 "SPECIAL/ATMIC"
 //0x0054C8E0 "SPECIAL/COLD1"
 //0x0054D6F0 "SPECIAL/RAKU"
 //0x0054E6D0 "SPECIAL/HARRIER"
 //0x0054F290 "SPECIAL/MIZU"
 //0x0054FA50 "SPECIAL/TRIANGLE"
 //0x00550CB0 "SPECIAL/OSEN"
 //0x00551B80 "SPECIAL/KYUU2"
 //0x005529F0 "SPECIAL/JIBAKU1"
 //0x00552CF0 "SPECIAL/KAMA2"
 //0x005535E0 "SPECIAL/SUMI"
 //0x00554010 "SPECIAL/KYUU"
 //0x00554E80 "SPECIAL/KAMA"
 //0x00555760 "SPECIAL/MISAIRU"
 //0x00556130 "SPECIAL/B_2"
 //0x005579E0 "special/yuwaku"
 //0x005586C0 "SPECIAL/REZA2"
 //0x00559470 "SPECIAL/HIKARI"
 //0x00559AC0 "SPECIAL/ITO"
 //0x0055A710 "SPECIAL/SUNA"
 //0x0055B350 "SPECIAL/KONOHA"
 //0x0055BA70 "SPECIAL/KIENGIRI"
 //0x0055C3B0 "special/tan"
 //0x0055C940 "SPECIAL/MGBEAM"
 //0x0055D240 "SPECIAL/TANE"
 //0x0055DA60 "SPECIAL/HARI"
 //0x0055E2E0 "SPECIAL/SARCHI"
 //0x0055EAE0 "SPECIAL/BAKYU"
 //0x0055F7E0 "SPECIAL/ONPA"
 //0x0055FDD0 "blue/chyobo"
 //0x00561B90 "magic/deth"
 //0x00564390 "magic/aleiz"
 //0x00565EC0 "blue/ruretto"
 //0x00566740 "blue/nanntoka"
 //0x00568D30 "blue/mytyg"
 //0x005696A0 "blue/lv4jibak"
 //0x0056A800 "blue/matra"
 //0x0056C1A0 "blue/reazer"
 //__diffAt(0x0056D880, 0x00000000, 0x00000000, OBJPATH "C_0056D880.obj");//[TODO] "magic/faiga3"
 //0x0056ECF0 "blue/lv5deth"
 //0x0056F2B0 "blue/dethfo"
 //0x0056FFD0 "blue/kaeru"
 //0x00570850 "blue/dragonn"
 //0x005711E0 "blue/hanmmer"
 //0x00571940 "blue/kusai"
 //0x00571E20 "blue/hatena"
 //0x00572B90 "blue/goblinp"
 //0x00573720 "blue/aqua"
 //0x00573D80 "blue/magikal"
 //0x005743C0 "BLUE/TRAINN"
 //0x00574B00 "MAGIC/TODO"
 //0x00574F90 "magic/minimam"
 //0x00575460 "magic/dethper"
 //0x00576F40 "blue/sflea"
 //0x00578520 "magic/debaria"
 //0x005796B0 "magic/altema"
 //0x0057A6E0 "blue/beata"
 //0x0057B630 "magic/brizag"
 //0x0057E260 "magic/faiga"
 //0x0057F210 "magic/flea"
 //0x00580750 "MAGIC/STOP"
 //0x00581550 "magic/sailess"
 //0x005819D0 "magic/queik"
 //0x00581D50 "magic/queig"
 //0x00585330 "magic/queir"
 //0x00587C90 "magic/heist"
 //0x00588D10 "MAGIC/SLIPL"
 //0x00589550 "SPECIAL/TIMEDMG"
 //0x0058ADB0 "SPECIAL/UZUMAKI"
 //0x0058BD10 "BLUE/KAENN"
 //0x0058CE50 "MAGIC/FREEZE"
 //0x0058E370 "SUMMON/SIVA"
 //0x00592720 "SUMMON/IFU"
 //0x00596F50 "SUMMON/LAMU"
 //0x0059B090 "SUMMON/TAITAN"
 //0x005A01A0 "MAGIC/HITMARK"
 //0x005A0DC0 "BLUE/HOWIN"
 //0x005A1320 "MAGIC/REZIST"
 //0x005A1850 "MAGIC/ESNA"
 //0x005A1D60 "MAGIC/BREAK"
// __diffAt(0x005A2570, 0x008C9978, 0x00000000, OBJPATH "C_005A2570.obj");//ok "MAGIC/BIO4"
 //0x005A2E60 "MAGIC/BIO3"
 //0x005A4220 "MAGIC/COMETEO"
 //0x005A5520 "MAGIC/BIO2"
 //0x005A66A0 "MAGIC/BIO"
 //0x005A6BF0 "MAGIC/COMET"
 //__diffAt(0x005A7DD0, 0x00000000, 0x00000000, OBJPATH "C_005A7DD0.obj");//[TODO] "MAGIC/GRAV5"
 //0x005A9630 "MAGIC/GRAV3_1"
 //0x005AA910 "MAGIC/GRAV2"
 //0x005AB420 "MAGIC/TORNADO"
 //0x005AC3A0 "MAGIC/DEJON"
 //0x005ACEF0 "SPECIAL/REZA1"
 //0x005AD5C0 "LIMIT/HVSHOT"
 //0x005AE4C0 "LIMIT/KYOGIRI"
// __diffAt(0x005AEC40, 0x008F34B8, 0x00000000, OBJPATH "C_005AEC40.obj");//ok "LIMIT/BLAVER"
 //0x005AF350 "LIMIT/IYASHI"
 //0x005AFF70 "SPECIAL/KEMU1"
// __diffAt(0x005B02E0, 0x008F36D8,          0, OBJPATH "C_005B02E0.obj");//ok "SUMMON/riva"
 //0x005B31F0 "MAGIC/BARSAC"
 //0x005B3970 "MAGIC/RIFREK"
 //0x005B3E40 "MAGIC/MBARIA"
 //0x005B42F0 "MAGIC/BARIA"
 //0x005B4D80 "MAGIC/SLOU"
 //0x005B5720 "MAGIC/GRAV1"
 //0x005B5E10 "MAGIC/BRIZAR2"
// __diffAt(0x005B6540, 0x008FD958, 0x00000000, OBJPATH "C_005B6540.obj");//ok "MAGIC/BRIZAD"
 //__diffAt(0x005B68A0, 0x00000000, 0x00000000, OBJPATH "C_005B68A0.obj");//[TODO] "MAGIC/THUNDER4"
 //0x005B7730 "MAGIC/THUNDER3"
 //0x005B8570 "MAGIC/THUNDERA"
// __diffAt(0x005B8E30, 0x008FDE88, 0x00000000, OBJPATH "C_005B8E30.obj");//ok "MAGIC/THUNDER"
// __diffAt(0x005B9480, 0x008FDF50, 0x00000000, OBJPATH "C_005B9480.obj");//ok "MAGIC/FAIRA"
// __diffAt(0x005B9810, 0x008FE0A8, 0x00000000, OBJPATH "C_005B9810.obj");//ok "MAGIC/FIRE"
 //-- --
// __diffAt(0x005B9B30, 0x008FE110, 0x007B7670, OBJPATH "C_005B9B30.obj");//ok
// __diffAt(0x005BE490, 0x008FE260,          0, OBJPATH "C_005BE490.obj");//ok
// __diffAt(0x005BE9F0,          0,          0, OBJPATH "C_005BE9F0.obj");//ok
// __diffAt(0x005BEC50,          0,          0, OBJPATH "C_005BEC50.obj");//ok "task.cpp"?
// __diffAt(0x005BF340,          0,          0, OBJPATH "C_005BF340.obj");//ok
// __diffAt(0x005BF9D0, 0x008FE2AC,          0, OBJPATH "C_005BF9D0.obj");//hobo ok[code]
// __diffAt(0x005BFAA0, 0x00000000,          0, OBJPATH "C_005BFAA0.obj");//ok
// __diffAt(0x005C01A0, 0x008FE2B8,          0, OBJPATH "C_005C01A0.obj");//ok "MAGIC/LIMIT"
// __diffAt(0x005C0C20, 0x00000000,          0, OBJPATH "C_005C0C20.obj");//ok
// __diffAt(         0, 0x008FE398,          0, OBJPATH "D_008FE398.obj");//ok
// __diffAt(0x005C0CA0, 0x008FEBA0,          0, OBJPATH "C_005C0CA0.obj");//ok
// __diffAt(0x005C2070, 0x008FEE2C,          0, OBJPATH "C_005C2070.obj");//ok
// __diffAt(0x005C67A0,          0,          0, OBJPATH "C_005C67A0.obj");//ok
// __diffAt(0x005C6B60,          0,          0, OBJPATH "C_005C6B60.obj");//ok -- character progression?
// __diffAt(0x005C7090,          0,          0, OBJPATH "C_005C7090.obj");//ok -- character progression?
// __diffAt(0x005C7260,          0,          0, OBJPATH "C_005C7260.obj");//ok -- character progression?
// __diffAt(0x005C7C50,          0,          0, OBJPATH "C_005C7C50.obj");//ok
// __diffAt(0x005C8000,          0,          0, OBJPATH "C_005C8000.obj");//ok -- some helper functions?
// __diffAt(0x005C8180,          0,          0, OBJPATH "C_005C8180.obj");//ok
// __diffAt(0x005C86E0, 0x008FEE38,          0, OBJPATH "C_005C86E0.obj");//ok
// __diffAt(0x005C8B80,          0,          0, OBJPATH "C_005C8B80.obj");//ok
// __diffAt(0x005C8C90,          0, 0x007B7688, OBJPATH "C_005C8C90.obj");//ok
// __diffAt(0x005C8FB0, 0x008FEE48, 0x007B76A0, OBJPATH "C_005C8FB0.obj");//ok
// __diffAt(0x005CA860,          0, 0x007B76C0, OBJPATH "C_005CA860.obj");//ok
// __diffAt(0x005CAD70, 0x008FEEC8, 0x00000000, OBJPATH "C_005CAD70.obj");//ok -- materia/equip/... related?
// __diffAt(0x005CF650,          0, 0x007B76C8, OBJPATH "C_005CF650.obj");//ok
// __diffAt(0x005D0690,          0, 0x00000000, OBJPATH "C_005D0690.obj");//ok
// __diffAt(0x005D0CA0,          0, 0x007B76E8, OBJPATH "C_005D0CA0.obj");//ok
// __diffAt(0x005D1050, 0x008FF038, 0x007B76F0, OBJPATH "inits.obj");//ok
// __diffAt(0x005D1520,          0, 0x00000000, OBJPATH "C_005D1520.obj");//ok
// __diffAt(0x005D16D0, 0x008FF068, 0x007B7700, OBJPATH "C_005D16D0.obj");//ok
// __diffAt(0x005D1910,          0,          0, OBJPATH "C_005D1910.obj");//ok -- random related too?
// __diffAt(0x005D1A30,          0, 0x007B772C, OBJPATH "C_005D1A30.obj");//ok
// __diffAt(0x005D2A30,          0, 0x00000000, OBJPATH "C_005D2A30.obj");//ok
// __diffAt(0x005D2E00,          0, 0x00000000, OBJPATH "C_005D2E00.obj");//ok
// __diffAt(0x005D2F40,          0,          0, OBJPATH "C_005D2F40.obj");//ok -- helper functions for magic FX?
// __diffAt(0x005D3240,          0,          0, OBJPATH "C_005D3240.obj");//ok -- helper functions for magic FX?
// __diffAt(0x005D3650,          0,          0, OBJPATH "C_005D3650.obj");//ok -- helper functions for "SUMMON/KNIGHTS"
// __diffAt(0x005D38D0,          0,          0, OBJPATH "C_005D38D0.obj");//ok -- helper function for "SUMMON/riva"
// __diffAt(0x005D4240,          0,          0, OBJPATH "C_005D4240.obj");//ok -- more magic callbacks?
// __diffAt(0x005D4390, 0x008FF078, 0x00000000, OBJPATH "C_005D4390.obj");//ok -- items,potion related?
// __diffAt(0x005D4F90, 0x008FF098, 0x00000000, OBJPATH "C_005D4F90.obj");//ok -- more magic callbacks?
// __diffAt(0x005D5720, 0x008FF0E8, 0x00000000, OBJPATH "C_005D5720.obj");//ok -- more magic callbacks?
// __diffAt(0x005D6A70, 0x008FF100, 0x00000000, OBJPATH "C_005D6A70.obj");//ok -- more magic callbacks?
// __diffAt(0x005D6E70, 0x008FF138, 0x00000000, OBJPATH "C_005D6E70.obj");//ok -- more magic callbacks?
// __diffAt(0x005D7720, 0x008FF170, 0x00000000, OBJPATH "C_005D7720.obj");//ok -- more magic callbacks?
// __diffAt(0x005D7CF0, 0x008FF1D8, 0x00000000, OBJPATH "C_005D7CF0.obj");//ok
// __diffAt(0x005D9550, 0x008FF1E8, 0x007B7738, OBJPATH "C_005D9550.obj");//ok
// __diffAt(0x005DC390,          0, 0x00000000, OBJPATH "C_005DC390.obj");//ok
// __diffAt(0x005DC880,          0, 0x007B7748, OBJPATH "C_005DC880.obj");//ok
// __diffAt(0x005DD700,          0, 0x007B7790, OBJPATH "C_005DD700.obj");//ok
// __diffAt(0x005DDBB0,          0, 0x007B77A8, OBJPATH "C_005DDBB0.obj");//ok
// __diffAt(0x005DE5C0, 0x008FF1F8, 0x00000000, OBJPATH "C_005DE5C0.obj");//ok
// __diffAt(0x005DF080,          0, 0x00000000, OBJPATH "C_005DF080.obj");//ok
// __diffAt(0x005DF0F0,          0, 0x00000000, OBJPATH "C_005DF0F0.obj");//ok -- damage management?
// __diffAt(0x005DF460, 0x008FF278, 0x007B77C8, OBJPATH "C_005DF460.obj");//ok
// __diffAt(0x005DFDC0, 0x008FF290, 0x00000000, OBJPATH "bdata.obj");//ok
// __diffAt(0x005E0200, 0/*0x008FF2E8*/, 0x00000000, OBJPATH "char.obj");//hobo ok[data]
// __diffAt(0x005E2A10, 0x008FFA50, 0x00000000, OBJPATH "limitbrk.obj");//ok
// __diffAt(0x005E2F00, 0x008FFB00, 0x007B77D0, OBJPATH "stage.obj");//ok
// __diffAt(0x005E3900, 0x008FFC00, 0x00000000, OBJPATH "enemy.obj");//ok
// __diffAt(0x005E4310, 0x008FFC78, 0x007B77DC, OBJPATH "lmd.obj");//ok
// __diffAt(0x005E7680, 0x00900084, 0x007B77EC, OBJPATH "amptoanm.obj");//ok
// __diffAt(0x005E8550, 0x00900120, 0x007B77F4, OBJPATH "mdl.obj");//ok
// __diffAt(         0, 0x00900198,          0, OBJPATH "D_00900198.obj");
 //====---- coaster ----====
// __diffAt(0x005E8A70, 0x0090140C, 0x007B77F8, OBJPATH "C_005E8A70.obj");//ok -- launcher
// __diffAt(0x005E9150, 0x00901410,          0, OBJPATH "C_005E9150.obj");//ok -- resources/sound?
// __diffAt(0x005E98E0, 0x009014A8, 0x007B780C, OBJPATH "C_005E98E0.obj");//ok -- main?
// __diffAt(0x005EA8C0, 0x009014B0,          0, OBJPATH "C_005EA8C0.obj");//ok -- track matrix?
// __diffAt(0x005EAB70,          0,          0, OBJPATH "C_005EAB70.obj");//ok -- game objects
// __diffAt(0x005ED8F0,          0,          0, OBJPATH "C_005ED8F0.obj");//ok -- "static" objects
// __diffAt(0x005EE150,          0,          0, OBJPATH "C_005EE150.obj");//ok -- input module
// __diffAt(0x005EE620, 0x009014F0,          0, OBJPATH "psxdata_c.obj");//ok
// __diffAt(0x005EE7F0,          0,          0, OBJPATH "C_005EE7F0.obj");//ok -- 3d models?
// __diffAt(0x005EEA50,          0,          0, OBJPATH "C_005EEA50.obj");//hobo ok[code] -- hit/clip?
// __diffAt(0x005EF1C0,          0,          0, OBJPATH "C_005EF1C0.obj");//ok -- nodes?
// __diffAt(0x005EF4D0, 0x00901550, 0x007B7810, OBJPATH "C_005EF4D0.obj");//ok -- Class_coaster_D8
 //====---- condor ----====
// __diffAt(0x005F2BF0, 0x00901644,          0, OBJPATH "cd_init.obj");//ok
// __diffAt(0x005F4630,          0,          0, OBJPATH "C_005F4630.obj");//ok
// __diffAt(0x005F4740, 0x00901A40, 0x007B7820, OBJPATH "cd_app.obj");//ok
// __diffAt(         0, 0x00901A90,          0, OBJPATH "D_00901A90.obj");//ok
// __diffAt(0x005F4C70, 0x00901AB0, 0x007B7828, OBJPATH "C_005F4C70.obj");//ok
// __diffAt(0x005F5C40, 0x00901AB4,          0, OBJPATH "cd_tim.obj");//ok
// __diffAt(0x005F76A0, 0x00901B70,          0, OBJPATH "C_005F76A0.obj");//ok
// __diffAt(0x005FA280, 0x00901B80,          0, OBJPATH "C_005FA280.obj");//ok
// __diffAt(0x005FA660, 0x00905464,          0, OBJPATH "cd_ddraw.obj");//ok
// __diffAt(0x005FAB70, 0x00905480,          0, OBJPATH "C_005FAB70.obj");//ok
// __diffAt(0x005FB300, 0x00905528,          0, OBJPATH "C_005FB300.obj");//ok
// __diffAt(0x005FD3A0,          0, 0x007B7830, OBJPATH "C_005FD3A0.obj");//ok
// __diffAt(0x005FF2E0,          0,          0, OBJPATH "C_005FF2E0.obj");//ok
// __diffAt(0x00603230,          0,          0, OBJPATH "C_00603230.obj");//ok
// __diffAt(0x006049D0,          0,          0, OBJPATH "C_006049D0.obj");//ok
// __diffAt(0x00606A50,          0,          0, OBJPATH "C_00606A50.obj");//ok
// __diffAt(0x00607880, 0x00905560, 0x007B7838, OBJPATH "C_00607880.obj");//ok
// __diffAt(0x0060A450,          0,          0, OBJPATH "C_0060A450.obj");//ok
 //====---- FIELD ----====
// __diffAt(0x0060B260,          0,          0, OBJPATH "C_0060B260.obj");//ok
// __diffAt(0x0060B9D0, 0x009055A0,          0, OBJPATH "C_0060B9D0.obj");//ok
// __diffAt(0x0060D810, 0x00905AC8, 0x007B7840, OBJPATH "ad_app.obj");//ok
// __diffAt(0x0060F750, 0x00905E50,          0, OBJPATH "C_0060F750.obj");//ok
// __diffAt(0x00620510,          0,          0, OBJPATH "C_00620510.obj");//ok
// __diffAt(0x00620790, 0x00905E58, 0x007B7850, OBJPATH "ad_data.obj");//ok
// __diffAt(0x0062D240, 0x009066F0,          0, OBJPATH "ad_image.obj");//ok
// __diffAt(0x006305C0, 0x00906750,          0, OBJPATH "ad_cdr.obj");//ok
// __diffAt(0x00630940,          0,          0, OBJPATH "C_00630940.obj");//ok
// __diffAt(0x006339C0, 0x009067C0,          0, OBJPATH "ad_human.obj");//ok
// __diffAt(0x006384B0, 0x009069C4, 0x007B7898, OBJPATH "C_006384B0.obj");//ok
// __diffAt(0x0063AA30, 0x009069CC,          0, OBJPATH "tutaddr.obj");//ok
// __diffAt(0x0063AC20, 0x00906A70,          0, OBJPATH "C_0063AC20.obj");//ok
// __diffAt(0x0063BC90, 0x00906B88,          0, OBJPATH "C_0063BC90.obj");//ok
// __diffAt(0x0063CD40, 0/*0x00906C68*/, 0x007B78AC, OBJPATH "ad_obj.obj");//hobo ok[data]
// __diffAt(0x0063F350, 0x00907C20,          0, OBJPATH "ad_tile.obj");//ok
// __diffAt(0x00641760, 0x00907D8C,          0, OBJPATH "ad_ddraw.obj");//ok
// __diffAt(0x00642950, 0x00907E10,          0, OBJPATH "ad_bk.obj");//ok
// __diffAt(0x00644A80,          0,          0, OBJPATH "C_00644A80.obj");//ok
// __diffAt(0x00645150, 0x00907F60, 0x007B78B8, OBJPATH "C_00645150.obj");//ok
// __diffAt(0x00646310,          0,          0, OBJPATH "C_00646310.obj");//ok
// __diffAt(0x006463F0, 0x00907F64, 0x007B7918, OBJPATH "ad_list.obj");//ok
// __diffAt(0x006470E0, 0x00907FC4,          0, OBJPATH "ad_pal.obj");//ok
// __diffAt(0x006496E0, 0x00908150,          0, OBJPATH "C_006496E0.obj");//ok
// __diffAt(0x00649770,          0,          0, OBJPATH "C_00649770.obj");//ok
// __diffAt(0x00649B30,          0,          0, OBJPATH "C_00649B30.obj");//ok
// __diffAt(0x00649B50, 0x00908E28,          0, OBJPATH "C_00649B50.obj");//ok
// __diffAt(0x00649DE0,          0, 0x007B7920, OBJPATH "C_00649DE0.obj");//ok
// __diffAt(0x0064A070,          0,          0, OBJPATH "C_0064A070.obj");//ok
// __diffAt(0x0064B090, 0x00908E30, 0x007B7930, OBJPATH "C_0064B090.obj");//ok
// __diffAt(0x0064D670,          0,          0, OBJPATH "C_0064D670.obj");//ok
// __diffAt(0x0064E0C0,          0,          0, OBJPATH "C_0064E0C0.obj");//ok
// __diffAt(0x0064E1B0,          0,          0, OBJPATH "C_0064E1B0.obj");//ok
// __diffAt(0x0064E940,          0,          0, OBJPATH "C_0064E940.obj");//ok
// __diffAt(0x0064EB50,          0,          0, OBJPATH "C_0064EB50.obj");//ok
// __diffAt(0x0064EC60,          0,          0, OBJPATH "C_0064EC60.obj");//ok
// __diffAt(0x0064EEE0,          0,          0, OBJPATH "C_0064EEE0.obj");//ok
// __diffAt(0x0064F420,          0,          0, OBJPATH "C_0064F420.obj");//ok
// __diffAt(0x0064F860,          0,          0, OBJPATH "C_0064F860.obj");//ok
// __diffAt(0x0064FB20,          0,          0, OBJPATH "C_0064FB20.obj");//ok
 //====---- HighWay ----====
// __diffAt(0x00650310,          0,          0, OBJPATH "C_00650310.obj");//ok -- launcher
// __diffAt(0x006504C0, 0x009092b0, 0x007B7990, OBJPATH "C_006504C0.obj");//ok -- main
// __diffAt(0x006520C0,          0,          0, OBJPATH "C_006520C0.obj");//ok -- input module
// __diffAt(0x006523B0, 0x0090930C,          0, OBJPATH "psxdata.obj");//ok
// __diffAt(0x00652670,          0,          0, OBJPATH "C_00652670.obj");//ok -- sparkles
// __diffAt(0x00652D40, 0x00909398,          0, OBJPATH "C_00652D40.obj");//ok -- Player & AI?
// __diffAt(0x00656EB0, 0x00909568, 0x007B79B0, OBJPATH "C_00656EB0.obj");//hobo ok[code] -- Class_HW_B0 & Class_HW_Road
// __diffAt(0x00658700, 0x009096A0, 0x007B79C8, OBJPATH "C_00658700.obj");//ok -- Class_HW_2DDisplay
// __diffAt(0x006595E0,          0,          0, OBJPATH "C_006595E0.obj");//ok -- Class_HW_Background
// __diffAt(0x00659770,          0, 0x007B79F4, OBJPATH "C_00659770.obj");//ok -- Class_HW_Node & Class_HW_C87C
// __diffAt(0x00659F50, 0x00909728,          0, OBJPATH "C_00659F50.obj");//ok -- Class_HW_ModelCache
// __diffAt(0x0065A3A0,          0, 0x007B7A00, OBJPATH "C_0065A3A0.obj");//ok -- Class_HW_Camera -- camera & trajectories
// __diffAt(0x0065BCE0, 0x0090A280,          0, OBJPATH "C_0065BCE0.obj");//ok -- Class_HW_AnimatedModel & Class_HW_ListAnimations
// __diffAt(0x0065C910, 0x0090A6C8, 0x007B7A18, OBJPATH "C_0065C910.obj");//ok[+__asm] -- Class_HW_20
// __diffAt(0x0065DC20,          0,          0, OBJPATH "C_0065DC20.obj");//ok -- Class_HW_4E0
// __diffAt(0x0065E520,          0,          0, OBJPATH "C_0065E520.obj");//ok -- part of PSXData?!?
// __diffAt(0x0065E560,          0, 0x007B7A20, OBJPATH "C_0065E560.obj");//ok -- Class_HW_Sprites
 //====---- some library? ----====
// __diffAt(0x0065EC20, 0x0090A808,          0, OBJPATH "memory.obj");//ok[check again]
// __diffAt(0x0065EC60,          0,          0, OBJPATH "C_0065EC60.obj");//ok
// __diffAt(0x0065ED50,          0, 0x007B7A30, OBJPATH "C_0065ED50.obj");//ok[+__asm]
// __diffAt(0x0065FAC0, 0/*0x0090A838*/,          0, OBJPATH "mem.obj");//hobo ok[data]
// __diffAt(0x00660370,          0, 0x007B7A48, OBJPATH "C_00660370.obj");//ok -- timing functions?
// __diffAt(0x00660540, 0x0090AA2C,          0, OBJPATH "g_drv.obj");//ok
// __diffAt(0x00661000, 0x0090AA90, 0x007B7A50, OBJPATH "psx.obj");//ok
// __diffAt(0x00664160, 0x0090AB64,          0, OBJPATH "dx_dbg.obj");//ok
// __diffAt(0x00664E90, 0x0090C86C, 0x007B7A80, OBJPATH "dx_3d2d.obj");//ok
// __diffAt(0x00666AB0, 0x0090C930,          0, OBJPATH "C_00666AB0.obj");//ok
// __diffAt(0x00666F60, 0x0090C9D8, 0x007B7A98, OBJPATH "psxgraph.obj");//ok
// __diffAt(0x0066C3D0,          0,          0, OBJPATH "C_0066C3D0.obj");//ok
// __diffAt(0x0066C4F0,          0,          0, OBJPATH "C_0066C4F0.obj");//ok -- optimized matrix functions
// __diffAt(0x0066D060, 0x0090CA84, 0x007B7AC0, OBJPATH "dx_spr.obj");//ok
// __diffAt(0x006700E0, 0/*0x0090CBC8*/, 0x007B7ACC, OBJPATH "dx_sfx.obj");//hobo ok[data]
// __diffAt(0x00674530, 0x0090CF38,          0, OBJPATH "rsd.obj");//ok
// __diffAt(0x006750E0, 0/*0x0090D16C*/,          0, OBJPATH "is_lib.obj");//hobo ok[data]
// __diffAt(0x006763F0, 0/*0x0090D268*/,          0, OBJPATH "directx.obj");//hobo ok[data]
// __diffAt(0x0067A050, 0x0090DE4C, 0x007B7AD8, OBJPATH "dx_mat.obj");//ok[+__asm]
// __diffAt(0x0067DB30,          0, 0x007B7B00, OBJPATH "WinMain.obj");//ok
// __diffAt(0x0067DED0, 0x0090E06C,          0, OBJPATH "C_0067DED0.obj");//ok
// __diffAt(0x0067F5F0, 0x0090F480,          0, OBJPATH "C_0067F5F0.obj");//ok[+__asm] -- sw:
// __diffAt(0x0067FA90, 0x0090F490, 0x007B7B08, OBJPATH "sw.obj");//ok
// __diffAt(0x00681FF0, 0x0090F690,          0, OBJPATH "file.obj");//ok[contains bug]
// __diffAt(0x00682D80,          0,          0, OBJPATH "C_00682D80.obj");//ok
// __diffAt(0x006833D0, 0x0090F964, 0x007B7B18, OBJPATH "anm.obj");//ok
// __diffAt(0x00685110, 0x0090F984, 0x007B7B20, OBJPATH "dx_stat.obj");//ok
// __diffAt(0x00685DA0, 0/*0x0090FBB8*/,          0, OBJPATH "dx_graph.obj");//hobo ok[data]
// __diffAt(0x006892B0, 0x00910480,          0, OBJPATH "thread.obj");//ok
// __diffAt(0x00689820, 0x00910658,          0, OBJPATH "render.obj");//ok
// __diffAt(0x0068AAC0, 0x00910798,          0, OBJPATH "dx_rendi.obj");//ok
// __diffAt(0x0068CF70,          0, 0x007B7B34, OBJPATH "C_0068CF70.obj");//ok
// __diffAt(0x0068D6F0, 0x00910A08, 0x007B7B3C, OBJPATH "C_0068D6F0.obj");//ok -- light related?
// __diffAt(0x0068F7A0, 0x00910A1C,          0, OBJPATH "instance.obj");
// __diffAt(0x0068F960, 0x00910A64,          0, OBJPATH "direct.obj");//ok
// __diffAt(0x00690240, 0/*0x00910B90*/, 0x007B7B50, OBJPATH "plytopd.obj");//hobo ok[data]
// __diffAt(0x00696D00, 0x009116DC,          0, OBJPATH "tim.obj");//ok
// __diffAt(0x00699470, 0/*0x00911A9C*/, 0x007B7B60, OBJPATH "polygon.obj");//hobo ok[data]
// __diffAt(0x0069AFC0, 0x00911FDC,          0, OBJPATH "list.obj");//ok
// __diffAt(0x0069B660, 0x00912088,          0, OBJPATH "C_0069B660.obj");//ok
// __diffAt(0x0069BC10,          0,          0, OBJPATH "C_0069BC10.obj");//ok[+__asm]
// __diffAt(0x0069BF90, 0x0091212C, 0x007B7B64, OBJPATH "light.obj");//ok
// __diffAt(0x0069CBD0, 0x009121EC,          0, OBJPATH "TexCache.obj");//hobo ok[code]
// __diffAt(0x0069F910, 0x00912234, 0x007B7B70, OBJPATH "trans.obj");//ok
// __diffAt(0x0069FCA0, 0/*0x00912288*/, 0x007B7B80, OBJPATH "dx_rend.obj");//hobo ok[data]
// __diffAt(0x006A28F0, 0x009129A8,          0, OBJPATH "stack.obj");//ok
// __diffAt(0x006A2AB0, 0x00912A64,          0, OBJPATH "shp.obj");//ok
// __diffAt(0x006A3280, 0x00912C50, 0x007B7B84, OBJPATH "dx_rend5.obj");//ok
// __diffAt(0x006A4F10, 0x00912E78,          0, OBJPATH "sort.obj");//ok
// __diffAt(0x006A5440, 0x00912F90,          0, OBJPATH "heap.obj");//ok
// __diffAt(0x006A5A70,          0,          0, OBJPATH "C_006A5A70.obj");//ok
// __diffAt(0x006A5D80, 0x00913050,          0, OBJPATH "dx_pal.obj");//ok
// __diffAt(0x006A6740, 0x009132B0,          0, OBJPATH "driver.obj");//ok
// __diffAt(0x006A6790, 0x009132F0,          0, OBJPATH "dx_rendx.obj");//ok
// __diffAt(0x006A68F0, 0x00917214, 0x007B7B88, OBJPATH "gl_code.obj");//ok
// __diffAt(0x006A9060, 0x009177EC,          0, OBJPATH "registry.obj");//ok
// __diffAt(0x006A91F0, 0x0091782C, 0x007B7B90, OBJPATH "dx_view.obj");//ok
// __diffAt(0x006A9B60,          0,          0, OBJPATH "C_006A9B60.obj");//ok -- setup OpenGL driver
// __diffAt(0x006A9DF0,          0,          0, OBJPATH "C_006A9DF0.obj");//ok -- setup SW driver
// __diffAt(0x006AA080,          0,          0, OBJPATH "C_006AA080.obj");//ok -- setup D3D/HW driver
// __diffAt(0x006AA340,          0,          0, OBJPATH "C_006AA340.obj");//ok -- sw:line clipper
// __diffAt(0x006AAAE0,          0,          0, OBJPATH "C_006AAAE0.obj");//ok[+__asm] -- sw:fast lines[debug]
// __diffAt(0x006AB1D0, 0x009179F0,          0, OBJPATH "C_006AB1D0.obj");//ok -- sw:
// __diffAt(0x006AB9C0, 0x00917C20,          0, OBJPATH "z.obj");//ok -- sw:
// __diffAt(0x006ABC60, 0x00917CC0, 0x007B7B98, OBJPATH "sw_vert.obj");//ok[+__asm] -- sw:
// __diffAt(0x006AC860,          0, 0x007B7BA0, OBJPATH "C_006AC860.obj");//ok -- sw:
// __diffAt(0x006AD110,          0,          0, OBJPATH "C_006AD110.obj");//ok -- sw:setup functions?
// __diffAt(0x006AF160, 0x00917D88,          0, OBJPATH "C_006AF160.obj");//ok -- sw:creates "c:/lib/h/graphics/sw/offset.hpp" file
// __diffAt(0x006B1D60, 0x00919514,          0, OBJPATH "C_006B1D60.obj");//ok -- sw:renderer?
// __diffAt(0x006B26C0, 0x0091951C, 0x007B7BB0, OBJPATH "dx_mesh.obj");//ok
// __diffAt(0x006B35D0, 0x0091955C,          0, OBJPATH "token.obj");//ok
// __diffAt(0x006B3CA0,          0,          0, OBJPATH "C_006B3CA0.obj");//ok -- blend mode related for plytopd
// __diffAt(0x006B3D10, 0x00919608,          0, OBJPATH "gl.obj");//ok
// __diffAt(0x006B6180, 0x009196C0, 0x007B7BC0, OBJPATH "C_006B6180.obj");//ok -- OpenGL:implementation of "dx_spr.cpp"
// __diffAt(0x006B6A10,          0,          0, OBJPATH "C_006B6A10.obj");//ok -- sw:implementation of "dx_spr.cpp"
// __diffAt(0x006B76F0, 0x009196C8,          0, OBJPATH "C_006B76F0.obj");//ok -- hw:blend mode
// __diffAt(0x006B77F0, 0x00919800, 0x007B7BC4, OBJPATH "C_006B77F0.obj");//ok -- sw:clipping functions?
// __diffAt(0x006B9200,          0,          0, OBJPATH "C_006B9200.obj");//ok[+__asm] -- sw:triangle drawing functions
// __diffAt(0x006BBBD0,          0, 0x007B7BCC, OBJPATH "C_006BBBD0.obj");//ok[+__asm] -- sw:some fixed_32_32//float conversions?
// __diffAt(0x006BBDC0,          0,          0, OBJPATH "C_006BBDC0.obj");//ok -- sw:more gradient
// __diffAt(0x006BC180,          0, 0x007B7BD0, OBJPATH "C_006BC180.obj");//ok -- sw:gradient related
// __diffAt(0x006BC2E0,          0,          0, OBJPATH "C_006BC2E0.obj");//ok[+__asm] -- sw:some gradient(for unused function)
// __diffAt(0x006BC350, 0x00919880,          0, OBJPATH "C_006BC350.obj");//ok[+__asm] -- sw:aligned quad rendering?
// __diffAt(0x006BE300, 0x009198E0, 0x007B7BD4, OBJPATH "C_006BE300.obj");//ok[+__asm] -- sw:render lines?
// __diffAt(0x006BF220,          0,          0, OBJPATH "C_006BF220.obj");//ok -- sw:2D clipping for aligned quads?
 //====---- Menu System ----====
// __diffAt(         0, 0x00919928,          0, OBJPATH "menu_data.obj");//
// __diffAt(0x006BF4E0, 0x00919960, 0x007B7BD8, OBJPATH "C_006BF4E0.obj");//ok -- "Exit box"
// __diffAt(0x006C0F60, 0x00919C18,          0, OBJPATH "C_006C0F60.obj");//ok -- icon resources
// __diffAt(0x006C1F60, 0x00919EA8,          0, OBJPATH "C_006C1F60.obj");//ok -- config submenu
// __diffAt(0x006C4970, 0x0091A8C0, 0x007B7BE0, OBJPATH "C_006C4970.obj");//ok -- main
// __diffAt(0x006CDC20, 0x0091ACB0,          0, OBJPATH "C_006CDC20.obj");//ok -- key config
 //-- combat specific --
// __diffAt(0x006CE7D0, 0x0091BD68,          0, OBJPATH "callback.obj");//ok[must check BSS]
// __diffAt(0x006CF5C0, 0x0091BE90, 0x007B7C08, OBJPATH "C_006CF5C0.obj");//ok
// __diffAt(0x006DC910, 0x0091E828, 0x007B7C58, OBJPATH "C_006DC910.obj");//ok
// __diffAt(0x006E5980,          0,          0, OBJPATH "C_006E5980.obj");//ok[must check BSS]
//                      0x0091EF90~0x0091EFC8
 //-- --
// __diffAt(0x006E6C30, 0x0091EFC8, 0x007B7CA8, OBJPATH "C_006E6C30.obj");//ok -- more graphic functions
// __diffAt(0x006F4D30,          0,          0, OBJPATH "C_006F4D30.obj");//ok -- input
// __diffAt(0x006F5490, 0x0091F034, 0x007B7CF8, OBJPATH "C_006F5490.obj");//ok -- graphic functions
// __diffAt(0x006FDCA0,          0,          0, OBJPATH "C_006FDCA0.obj");//ok -- "C" to "FF7" string
// __diffAt(0x006FE2B0, 0x0091F038,          0, OBJPATH "C_006FE2B0.obj");//ok -- unused menu?
// __diffAt(0x006FEB00,          0,          0, OBJPATH "C_006FEB00.obj");//ok -- empty menu?
// __diffAt(0x006FEB20, 0x0091F0B0,          0, OBJPATH "C_006FEB20.obj");//ok -- save submenu
// __diffAt(0x00700090, 0x0091F140,          0, OBJPATH "C_00700090.obj");//ok -- phs submenu
// __diffAt(0x007020A0, 0x0091F4D8,          0, OBJPATH "C_007020A0.obj");//ok -- limit menu
// __diffAt(0x00703610, 0x00920520,          0, OBJPATH "C_00703610.obj");//ok -- unused submenu
// __diffAt(0x00703760, 0x00920540,          0, OBJPATH "C_00703760.obj");//ok -- status menu
// __diffAt(0x00705C80, 0x009209A8,          0, OBJPATH "C_00705C80.obj");//ok -- equip menu
// __diffAt(0x00708670, 0x00920B18,          0, OBJPATH "C_00708670.obj");//ok -- materia menu
// __diffAt(0x00710C50, 0x00920FE8,          0, OBJPATH "C_00710C50.obj");//ok -- magic menu
// __diffAt(0x00714640, 0x00921168,          0, OBJPATH "C_00714640.obj");//ok -- item/.../... menu
// __diffAt(0x00718200,          0,          0, OBJPATH "C_00718200.obj");//ok -- input for tutorial
// __diffAt(0x00718710, 0x00921CB8,          0, OBJPATH "C_00718710.obj");//ok -- "please enter a name"
// __diffAt(0x00719D20, 0x009229B0,          0, OBJPATH "C_00719D20.obj");//ok -- shops
// __diffAt(0x00720080, 0x00925760, 0x007B7D28, OBJPATH "loadmenu.obj");//ok
// __diffAt(0x007228C0,          0,          0, OBJPATH "C_007228C0.obj");//ok
// __diffAt(0x00722BB0, 0x00926288,          0, OBJPATH "C_00722BB0.obj");//ok
 //====---- Snowboard ----====
// __diffAt(0x00722C10,          0,          0, OBJPATH "C_00722C10.obj");//ok
// __diffAt(0x00722E60, 0x00926290, 0x007B7D38, OBJPATH "C_00722E60.obj");//hobo ok[code]
// __diffAt(         0, 0x00926500,          0, OBJPATH "snobo_data.obj");//hobo ok[must convert data]
// __diffAt(         0, 0x0093A280,          0, OBJPATH "snobo_data2.obj");//hobo ok[must convert data]
// __diffAt(0x0072A170, 0x0094A340, 0x007B7D70, OBJPATH "C_0072A170.obj");//ok
// __diffAt(0x0072CA90, 0/*0x00956638*/, 0x007B7DA8, OBJPATH "C_0072CA90.obj");//hobo ok[data]
// __diffAt(0x0072FE00, 0x00956F00, 0/*0x007B7DC0*/, OBJPATH "C_0072FE00.obj");//hobo ok[code/data]
// __diffAt(0x00731AA0, 0x009624A0, 0x007B7DF4, OBJPATH "tmd.obj");//ok
// __diffAt(0x00733340,          0,          0, OBJPATH "C_00733340.obj");//ok
// __diffAt(0x00733360, 0x00962B40, 0x007B7E14, OBJPATH "C_00733360.obj");//ok
// __diffAt(0x00735220,          0,          0, OBJPATH "C_00735220.obj");//ok
// __diffAt(0x00735370,          0,          0, OBJPATH "C_00735370.obj");//ok
// __diffAt(0x00735400, 0x00962B60, 0x007B7E1C, OBJPATH "C_00735400.obj");//ok
// __diffAt(0x0073BB60, 0x00964CE8, 0x007B7E28, OBJPATH "C_0073BB60.obj");//ok
 //====---- Midi/sound ----====
// __diffAt(0x00740D80, 0x00966B14,          0, OBJPATH "C_00740D80.obj");//ok
// __diffAt(0x00741780, 0/*0x00966B48*/, 0x007B7E40, OBJPATH "midi1.obj");//hobo ok[data]
// __diffAt(0x00744400, 0x00967660, 0x007B7E70, OBJPATH "sound.obj");//ok
// __diffAt(0x00749940, 0x00967FA0,          0, OBJPATH "C_00749940.obj");
// __diffAt(0x00749C50,          0,          0, OBJPATH "C_00749C50.obj");//ok
// __diffAt(0x00749EE0, 0x0096805C,          0, OBJPATH "C_00749EE0.obj");
// __diffAt(0x0074A0D0, 0x009684C8,          0, OBJPATH "C_0074A0D0.obj");//ok
// __diffAt(0x0074A0F0, 0x00968920,          0, OBJPATH "dx_snd.obj");//ok
// __diffAt(0x0074A900, 0x00968BF8,          0, OBJPATH "acm.obj");//ok
// __diffAt(0x0074AB90, 0x00968CF4,          0, OBJPATH "C_0074AB90.obj");//ok
// __diffAt(0x0074ADE0, 0x00969198,          0, OBJPATH "sfutils.obj");//ok
// __diffAt(0x0074B8C0, 0x00969228,          0, OBJPATH "C_0074B8C0.obj");//ok
 //====---- World Map ----====
// __diffAt(0x0074BA80, 0x00969948, 0x007B7EC0, OBJPATH "C_0074BA80.obj");//ok
// __diffAt(0x0074C9A0, 0/*0x009699B0*/,          0, OBJPATH "C_0074C9A0.obj");//hobo ok[data]
// __diffAt(0x0074FFC0, 0x00969B30,          0, OBJPATH "C_0074FFC0.obj");//ok
// __diffAt(0x00753860, 0x00969B58, 0x007B7ED0, OBJPATH "C_00753860.obj");//ok
// __diffAt(0x007592E0, 0x00969CE8, 0x007B7ED8, OBJPATH "wmfile.obj");//ok
// __diffAt(0x0075AB50, 0x0096D55C,          0, OBJPATH "wmdefine.obj");//ok
// __diffAt(0x0075AC80, 0x0096D598, 0x007B7EE0, OBJPATH "C_0075AC80.obj");//ok
// __diffAt(0x0075E7A0,          0,          0, OBJPATH "C_0075E7A0.obj");//ok
// __diffAt(0x0075EE50,          0,          0, OBJPATH "C_0075EE50.obj");//ok
// __diffAt(0x0075F090,          0, 0x007B7EF0, OBJPATH "C_0075F090.obj");//ok
// __diffAt(0x00760FB0, 0x0096DDB0,          0, OBJPATH "C_00760FB0.obj");//ok
// __diffAt(0x007663E0,          0,          0, OBJPATH "C_007663E0.obj");//ok
// __diffAt(0x00766B70, 0x0096DEA0,          0, OBJPATH "C_00766B70.obj");//ok
// __diffAt(0x00767D40, 0x0096DEF0, 0x007B7F08, OBJPATH "C_00767D40.obj");//ok
// __diffAt(0x007688E0, 0x0096DF10,          0, OBJPATH "C_007688E0.obj");//ok
// __diffAt(0x00768C70, 0x0096E0B0,          0, OBJPATH "C_00768C70.obj");//ok
 //====---- chocobo ----====
// __diffAt(0x0076B850, 0/*0x0096E0F0*/, 0x007B7F10, OBJPATH "ch_init.obj");//hobo ok[data]
// __diffAt(0x0076D320, 0x0096E34C, 0x007B7F18, OBJPATH "ch_app.obj");//ok
// __diffAt(0x0076DDF0, 0x0096E518,          0, OBJPATH "C_0076DDF0.obj");//ok
// __diffAt(0x0076E1F0, 0x0096E5C0,          0, OBJPATH "C_0076E1F0.obj");//ok
// __diffAt(0x0076E2B0, 0x0096E878,          0, OBJPATH "C_0076E2B0.obj");//ok
// __diffAt(0x0076EFF0, 0/*0x0096EBE0*/, 0x007B7F20, OBJPATH "ch_chr.obj");//hobo ok[data]
// __diffAt(0x0076FF60, 0x00971D08,          0, OBJPATH "C_0076FF60.obj");//ok
// __diffAt(0x00770800, 0x00971DE0,          0, OBJPATH "C_00770800.obj");//ok
// __diffAt(0x00771660, 0x00972A78,          0, OBJPATH "C_00771660.obj");//ok
// __diffAt(0x00771680,          0,          0, OBJPATH "C_00771680.obj");//ok
// __diffAt(0x00772340,          0, 0x007B7F28, OBJPATH "C_00772340.obj");//ok
// __diffAt(0,          0x0097A108,          0, OBJPATH "D_0097A108.obj");//ok
// __diffAt(0x00776370, 0x0097A440, 0x007B7F2C, OBJPATH "C_00776370.obj");//ok
// __diffAt(0,          0x0097A4F8,          0, OBJPATH "D_0097A4F8.obj");//ok
// __diffAt(0x007794F0, 0x0097C748,          0, OBJPATH "ch_ddraw.obj");//ok
// __diffAt(0x00779850, 0x0097C768,          0, OBJPATH "C_00779850.obj");//ok
// __diffAt(0,          0x0097c8a8,          0, OBJPATH "D_0097C8A8.obj");//ok
// __diffAt(0x00779C90, 0x00980DA0, 0x007B7F38, OBJPATH "C_00779C90.obj");//ok
// __diffAt(0x0077CF40,          0,          0, OBJPATH "C_0077CF40.obj");//ok
 //====---- submarine ----====
// __diffAt(0x0077D030, 0x00980DA8, 0x007B7F60, OBJPATH "C_0077D030.obj");//ok
// __diffAt(         0, 0x00981000,          0, OBJPATH "D_00981000.obj");//ok
// __diffAt(0x0078CBD0, 0x00987018, 0x007B7F78, OBJPATH "C_0078CBD0.obj");//ok
// __diffAt(0x0078F4A0, 0x00987028,          0, OBJPATH "C_0078F4A0.obj");//ok
// __diffAt(0x00798160, 0x00987058,          0, OBJPATH "C_00798160.obj");//ok
// __diffAt(0x00798580, 0x009870B0, 0x007B7F90, OBJPATH "C_00798580.obj");//ok
// __diffAt(0x0079A550, 0x009873F8, 0x007B7FA0, OBJPATH "C_0079A550.obj");//ok
// __diffAt(0x0079C030, 0x00987478, 0x007B7FB8, OBJPATH "C_0079C030.obj");//ok
// __diffAt(         0, 0x009874F0,          0, OBJPATH "D_009874F0.obj");//ok
// __diffAt(         0, 0x00989D38,          0, OBJPATH "D_00989D38.obj");//ok
// __diffAt(         0, 0x0098A1A8,          0, OBJPATH "D_0098A1A8.obj");//ok
// __diffAt(         0, 0x0098A6E8,          0, OBJPATH "D_0098A6E8.obj");//ok
// __diffAt(0x0079F5C0,          0,          0, OBJPATH "C_0079F5C0.obj");//ok
// __diffAt(0x0079FB20, 0x00989CF8, 0x007B7FC8, OBJPATH "C_0079FB20.obj");//ok
// __diffAt(0x007A0190,          0, 0x007B7FD4, OBJPATH "C_007A0190.obj");//ok
// __diffAt(0x007A2CA0,          0,          0, OBJPATH "C_007A2CA0.obj");//ok
// __diffAt(0x007A3110,          0, 0x007B7FD8, OBJPATH "C_007A3110.obj");//ok
// __diffAt(         0, 0x00999718,          0, OBJPATH "D_00999718.obj");//ok
 //====---- credits ----====
// __diffAt(0x007A5060, 0x0099B4D0, 0x007B7FE0, OBJPATH "C_007A5060.obj");//ok
// __diffAt(0x007A8150, 0x0099C5F0, 0x007B7FF0, OBJPATH "C_007A8150.obj");//ok
// __diffAt(0x007A98F0, 0x0099C6B0,          0, OBJPATH "credfile.obj");//ok
// __diffAt(0x007AA820,          0, 0x007B8028, OBJPATH "C_007AA820.obj");//ok
 //------------------
 //--- 0x007AD7A0 ---
 //------------------
 //     more libc
 //------------------
 //--- 0x007B6000 ---
 //------------------

1 comment:

Unknown said...

Wow I really love what you are doing! I hope to see more about the internals of the game engine!