Changeset 484


Ignore:
Timestamp:
Dec 11, 2009, 9:58:07 AM (12 years ago)
Author:
gumby
Message:

ZOMG FLATLINE

Location:
Daodan/src
Files:
9 added
5 edited

Legend:

Unmodified
Added
Removed
  • Daodan/src/BFW_Utility.h

    r476 r484  
    2929int16_t ONICALL TSrContext_New( void* FontInstance, int size, int hthsik1,int hthsik2,int hthsik3, void* TSrContext); //int16_t TSrContext_New( TSFF*, size 7, ??? 1, ??? 1, ??? 0, TSrContext*);
    3030int16_t ONICALL TMrInstance_GetDataPtr(int, char*, void*);      //int TMrInstance_GetDataPtr( Type 'TSFF', char* "Tahoma", ptr);
    31 
     31char* ONICALL TMrInstance_GetInstanceName(void* InstancePointer);
    3232int __cdecl AUrMessageBox(int Buttons, char *Message, ...);
    3333
  • Daodan/src/Daodan_BSL.c

    r481 r484  
    77
    88#include "Daodan_BSL.h"
     9#include "Flatline_BSL.h"
    910#include "Daodan_Utility.h"
    1011#include "Daodan_Patch.h"
     
    1718#include "Daodan_Character.h"
    1819
     20
     21
    1922uint16_t ONICALL bsl_int32mul(sl_callinfo* callinfo, uint32_t numargs, sl_arg args[], int* dontuse1, int* dontuse2, sl_arg* ret)
    2023{
     
    5053        return 0;
    5154}
    52 
    5355uint16_t ONICALL bsl_div(sl_callinfo* callinfo, uint32_t numargs, sl_arg args[], int* dontuse1, int* dontuse2, sl_arg* ret)
    5456{
     
    218220        else index = args[0].value_int32;
    219221        Character* Chr = ONgGameState + 0x1260 ;
    220         int* health = (int)&Chr[index] + 0x144;
    221 
     222        int* health = (int*)Chr[index].ScriptNoPath;
     223       
     224        /*
     225        DDrConsole_PrintF("Character %s", Chr[index].Name);
     226        DDrConsole_PrintF("Spawn %s", Chr[index].ScriptSpawn);
     227        DDrConsole_PrintF("Death %s", Chr[index].ScriptDie);
     228        DDrConsole_PrintF("Aware %s", Chr[index].ScriptAware);
     229        DDrConsole_PrintF("Alarm %s", Chr[index].ScriptAlarm);
     230        DDrConsole_PrintF("Hurt %s", Chr[index].ScriptHurt);
     231        DDrConsole_PrintF("Defeat %s", Chr[index].ScriptDefeat);
     232        DDrConsole_PrintF("NoAmmo %s", Chr[index].ScriptNoAmmo);
     233        DDrConsole_PrintF("NoPath %s", Chr[index].ScriptNoPath);
     234        */
    222235        ret->value_int32 = *health;
    223236        ret->type = sl_int32;
     
    743756{
    744757
    745         //const char regen_patch[] = {0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90};
    746         //DDrPatch_Const(OniExe + 0x0011BB6D, regen_patch);
    747        
    748         //This one should work but doesn't.
    749         //const char regen_patch[] ={0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x8B, 0x86, 0x44};
    750         //DDrPatch_Const(OniExe + 0x0011BB64, regen_patch);
     758
     759        //Calculating the value of the needed offset is much more reliable when the compiler does it for you.
     760
     761        //TODO: fix moonshadow.
     762        Character * Chr = 0;
     763        char NoPath = (char)(0x100 - (int)(Chr->ScriptNoPath));
     764        const char regen_patch[] =
     765                {0x90, 0x90, 0x90, 0x90, 0x90,  // mov     al, _WPgRegenerationCheat
     766                0x90, 0x90,                                             // test    al, al
     767                0x90, 0x90,                                             // jz      short loc_51BB98
     768                0x8B, 0x86, NoPath};   
     769        DDrPatch_Const(OniExe + 0x0011BB64, regen_patch);
    751770
    752771        SLrConfig();
     
    783802        SLrScript_Command_Register_ReturnType("sprintf", "C-style sprintf.", "format:string arg1 arg2 ...", sl_str32, bsl_sprintf);
    784803       
    785         SLrScript_Command_Register_ReturnType("d_dprint", "prints to console in color", "text:string [color: r b g] [color: r b g]", sl_void, bsl_dprintcolored);
    786        
    787         //SLrScript_Command_Register_ReturnType("d_offset", "a test", "thing:int", sl_int32, bsl_returnoffset);
     804        SLrScript_Command_Register_ReturnType("st", "prints to console in color", "text:string [color: r b g] [color: r b g]", sl_void, bsl_dprintcolored);
     805       
     806        //Flatline
     807        SLrFlatline_Initialize();
     808
    788809}
    789810
  • Daodan/src/Oni.h

    r476 r484  
    4949
    5050
     51
    5152#endif
  • Daodan/src/Oni_Character.h

    r473 r484  
    126126        int32_t FILMInstance;
    127127} PlayingFilm;
     128
     129typedef enum {
     130        chr_isplayer          = 1 << 0,
     131        chr_randomskin        = 1 << 1,
     132        chr_notprespawned     = 1 << 2,
     133        chr_noncombatant      = 1 << 3,
     134        chr_multispawnable    = 1 << 4,
     135        chr_unkillable        = 1 << 5,
     136        chr_superammo         = 1 << 6,
     137        chr_omniscient        = 1 << 8,
     138        chr_haslsi            = 1 << 9,
     139        chr_boss              = 1 << 10,
     140        chr_upgradedifficulty = 1 << 11,
     141        chr_noautodrop        = 1 << 12,
     142        chr_dontaim           = 1 << 13,
     143        chr_nocollision       = 1 << 17,
     144        chr_noshadow          = 1 << 24,
     145        chr_invincible        = 1 << 25,
     146        chr_bossshield        = 1 << 30,
     147        chr_weaponimmune      = 1 << 31,
     148} chr_flags;
     149/*
     150enum {
     151chr_isplayer                    =               0x00000001,     //is player character
     152chr_randomskin                  =               0x00000002,     //gets random skin from ONCV
     153chr_notprespawned               =               0x00000004,     //isn't spawned at level creation
     154chr_noncombatant                =               0x00000008,     //doesn't fight
     155chr_multispawnable              =               0x00000010,     //can spawn up to 5 without forcing
     156chr_unknown                             =               0x00000020,     //
     157chr_unkillable                  =               0x00000040,     //can only be brought to 1 hp
     158chr_superammo                   =               0x00000080,     //infinite ammo
     159chr_omniscient                  =               0x00000100,     //touchofdeath
     160chr_haslsi                              =               0x00000200,     //drops an lsi
     161chr_boss                                =               0x00000400,     //is a boss character
     162chr_upgradedifficulty   =               0x00000800,     //upgrade the difficulty if you play on med\hard
     163chr_noautodrop                  =               0x00001000,     //uses drop fields instead of has fields on death
     164}; //
     165*/
    128166
    129167typedef struct {
     
    216254} Inventory;
    217255
     256typedef struct {
     257        uint32_t SphereTree;
     258        Vector3 ObBox[8];
     259        Vector3 * ObBowPtr;
     260        Vector3 Velocity;
     261        Quaternion field_74;
     262        Vector3 Position;
     263        Quaternion Rotation;
     264        float Scale;
     265        Matrix4x3 Matrix;
     266        Matrix4x3 InitMatrix;
     267        float field_104;
     268        float Gravity;
     269        float field_10C;
     270        float field_110;
     271        float Friction_1;
     272        float Friction_2;
     273        Vector3 Force;
     274        uint32_t Flags;
     275        uint32_t Type;
     276        char AnimState[0x18];
     277        void* Callbacks;
     278        void* Owner;
     279} PhyContext;
     280
    218281typedef struct { //ActiveCharacter
    219282        int16_t Number;
    220283        int16_t field_2; //probably Number is an int32
    221         int32_t PhyContext;
     284        PhyContext * PhyContext_;
    222285        SphereTreeNode SphereTree1;             //probably SphereTree[7]...
    223286        SphereTreeNode SphereTree3[4];
     
    441504        int32_t Flags;
    442505        int32_t field_8;
    443         int32_t ONCC;                   //change type to ONCC when we get that far...
     506        int32_t* ONCC;                  //change type to ONCC when we get that far...
    444507        int16_t field_10;
    445508        int16_t Team;
     
    542605        team_syndicateaccessory,
    543606};
    544 
    545 typedef enum {
    546         chr_isplayer          = 1 << 0,
    547         chr_randomskin        = 1 << 1,
    548         chr_notprespawned     = 1 << 2,
    549         chr_noncombatant      = 1 << 3,
    550         chr_multispawnable    = 1 << 4,
    551         chr_unkillable        = 1 << 5,
    552         chr_superammo         = 1 << 6,
    553         chr_omniscient        = 1 << 8,
    554         chr_haslsi            = 1 << 9,
    555         chr_boss              = 1 << 10,
    556         chr_upgradedifficulty = 1 << 11,
    557         chr_noautodrop        = 1 << 12,
    558         chr_dontaim           = 1 << 13,
    559         chr_nocollision       = 1 << 17,
    560         chr_noshadow          = 1 << 24,
    561         chr_invincible        = 1 << 25,
    562         chr_bossshield        = 1 << 30,
    563         chr_weaponimmune      = 1 << 31,
    564 } chr_flags;
    565 /*
    566 enum {
    567 chr_isplayer                    =               0x00000001,     //is player character
    568 chr_randomskin                  =               0x00000002,     //gets random skin from ONCV
    569 chr_notprespawned               =               0x00000004,     //isn't spawned at level creation
    570 chr_noncombatant                =               0x00000008,     //doesn't fight
    571 chr_multispawnable              =               0x00000010,     //can spawn up to 5 without forcing
    572 chr_unknown                             =               0x00000020,     //
    573 chr_unkillable                  =               0x00000040,     //can only be brought to 1 hp
    574 chr_superammo                   =               0x00000080,     //infinite ammo
    575 chr_omniscient                  =               0x00000100,     //touchofdeath
    576 chr_haslsi                              =               0x00000200,     //drops an lsi
    577 chr_boss                                =               0x00000400,     //is a boss character
    578 chr_upgradedifficulty   =               0x00000800,     //upgrade the difficulty if you play on med\hard
    579 chr_noautodrop                  =               0x00001000,     //uses drop fields instead of has fields on death
    580 }; //
    581 */
    582 int16_t ONICALL ONrGameState_NewCharacter(CharacterObject* CHAR, void* AISA, void* flag, int* list_location);
     607int16_t ONICALL ONrGameState_NewCharacter(CharacterObject* CHAR, void* AISA, void* flag, uint32_t* list_location);
    583608int32_t* ONICALL ONrGetActiveCharacter(void* CharacterPtr);
    584609//int16_t ONICALL ONrGameState_GetPlayerCharacter();
     
    596621#define char_weaponimmune      (1 << 31)
    597622
     623
     624//We need a Oni_Structs #include file.
     625
     626typedef struct {
     627        uint32_t TimerMode;
     628        char TimerName[32];
     629        uint32_t TimerDuration;
     630        uint32_t field_28;
     631        uint32_t field_2C;
     632        uint32_t Letterbox[3];
     633        uint32_t field_3C;
     634        uint32_t field_40;
     635        uint32_t CutsceneSyncMark;
     636        uint32_t SomeCutsceneSyncMarkField;
     637        uint32_t field_4C;
     638        uint32_t SplashScreenMachineTime;
     639        uint32_t field_54;
     640        uint32_t field_58;
     641        uint32_t field_5C;
     642        uint32_t field_60;
     643        uint32_t field_64;
     644        uint32_t field_68;
     645        uint32_t field_6C;
     646        uint32_t field_70;
     647        uint32_t FadeStartTime;
     648        uint32_t FadeEndTime;
     649        uint32_t field_7C;
     650        uint32_t Camera;
     651        char PathFindingGraph[0x28];
     652        struct Character *PlayerCharacter;
     653        uint32_t field_B0;
     654        uint32_t field_B4;
     655        GameInput Input;
     656        uint32_t field_E8;
     657        uint32_t field_EC;
     658        uint32_t ScreenshotEveryFrame; //bool?
     659        uint32_t field_F4;
     660        char field_F8;
     661        char field_F9;
     662        char field_FA;
     663        char field_FB;
     664        uint32_t field_FC;
     665        uint32_t field_100;
     666        uint32_t SlowMo;        //bool
     667        uint32_t SlowMotion;
     668        uint32_t field_10C;
     669        uint32_t field_110;
     670        uint32_t field_114;
     671        char SplashScreenTextureName[32];
     672        uint32_t field_138;
     673        uint32_t field_13C;
     674        uint32_t field_140;
     675        uint32_t GameTime;
     676        uint32_t field_148;
     677        uint32_t field_14C;
     678        uint32_t Level;
     679        uint32_t field_154;
     680        char MotionBlur[0x44][64];
     681        uint32_t MotionBlurCount;
     682        uint16_t field_125C;
     683        uint16_t field_125E;
     684        Character CharacterStorage[128];
     685        uint16_t CharacterCount;
     686        uint16_t padding_1;
     687        uint32_t field_B6264;
     688        char ActiveCharacters[0x2838][64]; //Active Character Struct isn't the proper size atm.
     689        uint16_t ActiveCharactersCount;
     690        char Shadows[32][0x804];
     691        uint32_t field_1670EA;
     692        uint32_t ShadowCount;
     693        ActiveCharacter* ActiveCharacterList[128]; //or just Character*? Anyways, we wont need to use this.
     694        uint32_t ActiveCharacterListCount;
     695        uint32_t ActiveCharacterListLock;
     696        Character* LivingCharacterList[128];
     697        uint32_t LivingCharacterListCount;
     698        uint32_t LivingCharacterListLock;
     699        ActiveCharacter* PresentCharacterList[128];
     700        uint32_t PresentCharacterListCount;
     701        uint32_t PresentCharacterListLock;
     702        void* ObjectList;
     703        char DoorArray[8];
     704        char Sky[0x290];
     705        uint32_t field_1679A4;
     706        uint32_t Triggers;
     707        char IsGamePaused;
     708        char IsInputEnabled;
     709        char field_1679AE;
     710        char field_1679AF;
     711        uint32_t LockedActions1;
     712        uint32_t LockedActions2;
     713        uint32_t field_1679B8;
     714        uint32_t WinLose;
     715        uint32_t ConditionSoundsCount;
     716        uint32_t ConditionSounds[5];
     717        uint16_t LevelNumber;
     718        uint16_t padding_5;
     719        uint16_t field_1679DC;
     720} GameState;
     721
     722
    598723#endif
  • Daodan/src/Oni_Symbols.S

    r476 r484  
    6565symbol ( @TSrContext_New@24                        , 0x0002EA30 )
    6666symbol ( @TMrInstance_GetDataPtr@12                , 0x000232E0 )
    67 
     67symbol ( @TMrInstance_GetInstanceName@4                    , 0x00023D90 )
    6868symbol ( @COrTextArea_Print@28                     , 0x00031340 )
    6969
     
    8383symbol ( @SLrGlobalVariable_Register_Int32@12      , 0x00077e30 )
    8484symbol ( @SLrGlobalVariable_Register_Float@12      , 0x00077ec0 )
     85symbol ( @SLrGlobalVariable_Register_String@12      , 0x00077fe0 )
    8586
    8687// Messages
Note: See TracChangeset for help on using the changeset viewer.