If you'd like to support our preservation efforts (and this wasn't cheap), please consider donating or supporting us on Patreon. Thank you!
User:Juanmv94/Temp
| Thunder Offshore |
|---|
|
Developers: NoriaWorks Entertainment
|
Thunder offshore was the last game made by the spanish company NoriaWorks. This futuristic motorboat racing game features advanced 3D graphics and effects for its era.
Contents
Unused sounds
Unused images
Placeholder Scores Screen
An early scores screen placeholder image is present in RECORDS.PIC. It has some zeroed scores in it with a different font.
Intro image
The unused image PRESENT.PIC has its own palette PRESENT.PAL and might be an early intro image for the game.
Unused Lenguaje Selection Palette
Unused palette file IDIOMA.PAL seems to be a palette for a cutted lenguaje selection screen. In the final game, the lenguaje is set during the installation.
Developers Console
There are some strings in MENUS.EXE refering to a developers console. It's unknown if it can still be reactivated.
RTHUNDER CONSOLE MODE SPAWNED
USE AT YOUR WILL
NO HELP AVAILABLE
CONSOLE:
PRESS ESC TO QUIT CONSOLE
Cutted Debug Mode
Cheat Functionality
There are some strings in MENUS.EXE refering to a cheat option.
CCHEAT
CHEAT MODE ON
CHEAT MODE OFF
Unused Text
Wrong File Errors
There are some error messages when some of the game files are incorrect or incomplete. These error messages can't be displayed unless we alter the game CD content.
Developers Messages
There are some rude developer messages in MENUS.EXE. Is unknown if there's a way to show them in-game.
Talk
The game is splitted in various EXE files:
- SETENV.EXE is the first to be run, and just sets the environment.
- MENUS.EXE is open at every menu of the game, at every video mode
- JUEGO[64][M].exe is open when a race starts. 64 means 640x480 mode, and M means mortal effects.
All this executables are switched by the THUNDER.BAT batch file. They all need at least one parameter to be run, or a message saying to run THUNDER.BAT will appear. The executables doesn't read the parameters, and they communicate through temporary INI files in the game folder.
Game sounds are stored in the DIGITAL folder from the CD in DFX format. These files are wave files that can be renamed to WAV to be played. There are more sounds in the GRA and GRA640 folder from the CD in WAV format. Some of them are duplicated.
Game graphics are stored in the packed RESOURCE.PAK file. They are all palletized 256 color images:
- PAL files are the palette files. Their 256 colors are organized with one byte per channel as RGBRGBRGB... and their range is from {hex|0x00} to {hex|0x3F}
- PIC files are the uncompressed raw image files. They start with 2 int16 values with the width and height of the image followed by the raw data.
- SPR files have the uncompressed raw sprites.
Here is an util I made to extract the PIC files into palletized BMP files:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv) {
FILE *pal,*img,*out;
char outn[128];
short dim[2];
int dimt;
char bm1[]={0x42,0x4d};
int bm2;
char bm3[]={0x00,0x00,0x00,0x00,0x36,0x04,0x00,0x00,0x28,0x00,0x00,0x00};
int bm4[2];
char bm5[]={0x01,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0xE8,0x03,0x00,0x13,0x0B,0x00,0x00,0x13,0x0B,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00};
int i;
char curcol[4];
char *rawimg;
if (argc!=3 || !(img=fopen(argv[1],"rb")) || !(pal=fopen(argv[2],"rb"))) {
printf("Error. Uso: %s imagen.pic paleta.pal\n",argv[0]);
return (EXIT_SUCCESS);
}
fread(dim,2,2,img);
printf("Dimensiones imagen: %dx%d",dim[0],dim[1]);
dimt=dim[0]*dim[1];
bm2=dimt+1078;
bm4[0]=dim[0];
bm4[1]=dim[1];
strcpy(outn, argv[1]);
strcat(outn, ".bmp");
if (!(out=fopen(outn,"wb+"))) {
printf("Error: compruebe permisos de escritura");
return (EXIT_SUCCESS);
}
fwrite(bm1,2,1,out);
fwrite(&bm2,4,1,out);
fwrite(bm3,12,1,out);
fwrite(bm4,2,4,out);
fwrite(bm5,28,1,out);
for (i=0;i<256;i++)
{
curcol[3]=0;
curcol[2]=fgetc(pal)<<2;
curcol[1]=fgetc(pal)<<2;
curcol[0]=fgetc(pal)<<2;
fwrite(&curcol,4,1,out);
}
rawimg=malloc(dimt);
for (i=(dimt-bm4[0]);i>=0;i-=bm4[0])
{
fread(rawimg+i,bm4[0],1,img);
}
fwrite(rawimg,dimt,1,out);
return (EXIT_SUCCESS);
}