Skip to content

Commit 5e64acf

Browse files
author
Niko
committed
progress
1 parent 00ae218 commit 5e64acf

File tree

2 files changed

+60
-4
lines changed

2 files changed

+60
-4
lines changed

mods/Levels/Automate/LevelUploader/LevelUploader/main.c

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
#define _CRT_SECURE_NO_WARNINGS
2+
13
#define WIN32_LEAN_AND_MEAN
24
#include <windows.h>
35

@@ -36,8 +38,7 @@ struct DramPointerMap
3638

3739
void UploadToDuck(char** argv)
3840
{
39-
printf("%s\n", argv[1]);
40-
FILE* f = fopen(argv[1], "rb");
41+
FILE* f = fopen("dataLEV.bin", "rb");
4142

4243
fseek(f, 0, SEEK_END);
4344
int size = ftell(f);
@@ -62,6 +63,21 @@ void UploadToDuck(char** argv)
6263
// set level file pointer
6364
*(int*)&pBuf[(0x80096b20 + 0x160) & 0xffffff] = 0x80200004;
6465

66+
// ============================================
67+
68+
f = fopen("dataVRAM.bin", "rb");
69+
70+
fseek(f, 0, SEEK_END);
71+
size = ftell(f);
72+
rewind(f);
73+
74+
// read to 4mb on PS1
75+
fread(&pBuf[0x400000], size, 1, f);
76+
77+
fclose(f);
78+
79+
*(int*)&pBuf[(0x8000c000) & 0xffffff] = 1;
80+
6581
printf("Here\n");
6682
system("pause");
6783
exit(0);

mods/Levels/RawTrackInjection/src/battle_runtime.c

Lines changed: 42 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -166,14 +166,54 @@ void RunUpdateHook()
166166
// disable end-of-race high score saving,
167167
// but &1 is needed for the ghosts to work
168168
gGT->unknownFlags_1d44 = 1;
169-
169+
170+
#if 0
170171
d = gGT->drivers[0];
171172

172-
#if 0
173173
// get AI Nav data
174174
printf("{.pos = {%d,%d,%d},.rot={%d,%d,%d,%d}},\n",
175175
d->posCurr[0]/256, d->posCurr[1]/256, d->posCurr[2]/256,
176176
d->rotCurr.x/16, d->rotCurr.y/16, d->rotCurr.z/16, d->rotCurr.w/16);
177177
#endif
178+
179+
// this gets triggered by the injector
180+
if(*(int*)0x8000c000 == 1)
181+
{
182+
*(int*)0x8000c000 = 0;
183+
184+
void FakeVramCallback();
185+
FakeVramCallback();
186+
187+
gGT->visMem1 = gGT->level1->visMem;
188+
gGT->visMem2 = gGT->visMem1;
189+
}
178190
}
179191

192+
void FakeVramCallback()
193+
{
194+
int* vramBuf = 0x80400000;
195+
struct VramHeader* vh = vramBuf;
196+
197+
// if multiple TIMs are packed together
198+
if(vramBuf[0] == 0x20)
199+
{
200+
int size = vramBuf[1];
201+
vh = &vramBuf[2];
202+
203+
while(size != 0)
204+
{
205+
LoadImage(&vh->rect, VRAMHEADER_GETPIXLES(vh));
206+
207+
vramBuf = (int*)vh;
208+
vramBuf = &vramBuf[size>>2];
209+
size = vramBuf[0];
210+
vh = &vramBuf[1];
211+
}
212+
}
213+
214+
// if just one TIM
215+
else
216+
{
217+
LoadImage(&vh->rect, VRAMHEADER_GETPIXLES(vh));
218+
}
219+
}

0 commit comments

Comments
 (0)