CSuperDocOck::CSuperDocOck(int*, int) and SuperDocOck_CreateSuperDocOck

This commit is contained in:
krystalgamer 2024-05-17 18:46:58 +02:00
parent d52f363f81
commit e260f3b49f
4 changed files with 85 additions and 5 deletions

View File

@ -10,6 +10,7 @@ static int * const dword_5FCCF4 = (int*)0x5FCCF4;
static unsigned char * const submarinerDieRelated = (unsigned char*)0x0060CFC4;
static unsigned __int16 * const word_6B2478 = (unsigned __int16*)0x6B2478;
static int * const gTimerRelated = (int*)0x006B4CA8;
static void print_if_false(unsigned char cry, char * message, ...) {
if (cry) {

2
ob.cpp
View File

@ -541,8 +541,6 @@ void CSuper::RunAnim(__int16 a2, int a3, int a4)
this->field_142 = (unsigned __int16)v7 == (unsigned __int16)v8;
}
static int * const gTimerRelated = (int*)0x006B4CA8;
// @NotOk
// timerRelated needs to be fixed and call to print_if_false looks wrong
void CBody::EveryFrame(void)

View File

@ -1,8 +1,66 @@
#include "superock.h"
#include "validate.h"
// @NotOk
// globals
CSuperDocOck::CSuperDocOck(int *a2, int a3)
{
this->field_32C = 0;
this->field_330 = 0;
this->field_334 = 0;
this->field_344 = reinterpret_cast<int>(
this->SquirtAngles(reinterpret_cast<__int16*>(this->SquirtPos(a2))));
this->InitItem("superock");
this->mFlags |= 0x480;
this->mCBodyFlags &= 0xFFEF;
this->field_3C = 0x557928;
this->field_E2 = 500;
this->field_DC = 0;
this->AttachTo(reinterpret_cast<CBody**>(0x56E9900));
this->field_38 = 309;
this->field_1F4 = a3;
this->field_DE = a3;
this->field_36C = 1024;
this->field_374 = 0x10000;
this->field_370 = 0x10000;
this->field_3D8 = 4;
this->field_31C.bothFlags = 1;
this->field_21E = 100;
*reinterpret_cast<int*>(0x54E8D4) = 4096;
*reinterpret_cast<int*>(0x60F774) = 0xFFFFFF;
*reinterpret_cast<unsigned char*>(0x60F772) = 1;
*reinterpret_cast<int*>(0x60F778) = *gTimerRelated;
this->field_194 = 0xFFFE0000;
this->field_198 = 0x1FFF;
}
// @Ok
void SuperDocOck_CreateSuperDocOck(const unsigned int *stack, unsigned int *result)
{
int* v2 = reinterpret_cast<int*>(*stack);
int v3 = static_cast<int>(stack[1]);
*result = reinterpret_cast<unsigned int>(new CSuperDocOck(v2, v3));
}
void validate_CSuperDocOck(void){
VALIDATE_SIZE(CSuperDocOck, 0x414);
}
VALIDATE(CSuperDocOck, field_32C, 0x32C);
VALIDATE(CSuperDocOck, field_330, 0x330);
VALIDATE(CSuperDocOck, field_334, 0x334);
VALIDATE(CSuperDocOck, field_344, 0x344);
VALIDATE(CSuperDocOck, field_36C, 0x36C);
VALIDATE(CSuperDocOck, field_370, 0x370);
VALIDATE(CSuperDocOck, field_374, 0x374);
VALIDATE(CSuperDocOck, field_3D8, 0x3D8);
}

View File

@ -1,5 +1,8 @@
#pragma once
#ifndef SUPEROCK_H
#define SUPEROCK_H
#include "export.h"
#include "baddy.h"
@ -7,8 +10,28 @@
class CSuperDocOck : public CBaddy {
public:
unsigned char fullPad[0x414-0x324];
EXPORT CSuperDocOck(int*, int);
unsigned char padTop[0x32C-0x324];
int field_32C;
int field_330;
int field_334;
unsigned char padAfter334[0x344-0x334-4];
int field_344;
unsigned char padAfter344[0x36C-0x344-4];
int field_36C;
int field_370;
int field_374;
unsigned char padAfter374[0x3D8-0x374-4];
int field_3D8;
unsigned char padBottom[0x414-0x3D8-4];
};
void validate_CSuperDocOck(void);
void validate_CSuperDocOck(void);
EXPORT void SuperDocOck_CreateSuperDocOck(const unsigned int *stack, unsigned int *result);
#endif