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 that could run smothly in most computers.
Contents
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
In the THUNDER.INI file created by MENUS.EXE to tell JUEGO[64][M].EXE the track to play and the options, there's a line in the MISCELANEOUS category with:
Debug Mode = FALSE
This line is hardcoded into MENUS.EXE, and changing its value to TRUE does nothing as JUEGO[64][M].EXE just ignores this property.
Cheat Functionality
There are some strings in MENUS.EXE refering to a cheat option.
CCHEAT
CHEAT MODE ON
CHEAT MODE OFF
Unused sounds
Game Sounds
Despite all the WAV sounds from JUEGO[64][M].EXE are referenced, the ambiental sounds at SAM%d.WAV never plays:
File:Thunder Offshore SAM1.WAV.ogg
File:Thunder Offshore SAM2.WAV.ogg
File:Thunder Offshore SAM3.WAV.ogg
File:Thunder Offshore SAM4.WAV.ogg
File:Thunder Offshore SAM6.WAV.ogg File:Thunder Offshore SAM7.WAV.ogg File:Thunder Offshore SAM8.WAV.ogg File:Thunder Offshore SAM9.WAV.ogg File:Thunder Offshore SAM10.WAV.ogg File:Thunder Offshore SAM11.WAV.ogg File:Thunder Offshore SAM12.WAV.ogg
Menu Sounds
Menu sounds are stored in the DIGITAL folder from the CD. It seems that many game sound were meant to be stored here too.
There are lot of unused sounds in this folder, some of them are referenced in the EXE, and there are unreferenced sounds too.
Unused sounds not referenced by the EXE present in the folder:
- GRUA2.DFX
- HANNOISE.DFX
- LUCES.DFX
- LUZ1.DFX
- LUZ2.DFX
- PASADA4.DFX
- TURSTAD2.DFX
- TURSTAD3.DFX
- TURSTAD4.DFX
Unused Text
Debug Messages
There are some debug messages inside the game executables. Most of these messages are meant to appear when some of the CD game files were missing, incorrect or incomplete. Here are some of them:
No he encontrado el fichero de una lancha
Error por final de fichero
Falta el fichero .TAB
Mal fichero .TAB
Mal fichero de intercambio THUNDER.INI
Mal fichero de circuitos CIRCUIT.INI
AL CREAR MAPAS Y BUFERES
No puedo leer el mapa
CUANDO YA SE HA CARGADO EL MAPA
No puedo leer los comportamientos
DESPUES DE CARGAR LOS COMPORTAMIENTOS
DESPUES DE CARGAR EL MARCADOR
Developers Messages
There are some developer messages in MENUS.EXE. They may be related to the developers console.
ALEX
SE .ALEX IS A REAL CODER
VPORKO
E
CHELO
.. .WILL ALLWAYS LOVE YOU
VICTOR
.THE BEST MUSICIAN
VITU
RAFA
.DONT SAY IT AGAIN
CESAR
.HIPERVENTILATOR RULEZ
LETICIA
.SHE IS A SUCKER
ALLETI
R
VJOSETE
.MACACUS RHESUS
LWAMASTO
E PETE
ICT .SLIME HAIRED
JORGE
BEJOSE
SIC .PAQUETE
JACOBO
.OVERKILL CODER SOON
SAJAC
UNAI
ERV .STINKS BUT BEST CODER
JUAN
IS .MARLEY, GREAT SHOOT
SEPEDRO
MA .CABEZABOLO
LWAELIER
E .DALAI LAI LAMA
FERNANDO
OSE .HAVE TONS OF GIRLFRIENDS
VPIPILLO
.ARRANCAR ZUZ BOLAZ
ERVCLOWN
KS .YO NO ME LLAMO ASIN
ISJARE
LEY .COOL
JCAB
SE .VTAL FOREVER
AFRIENDWARE
E .THEY DISCOUNTS OUR PRODUCTION COSTS
OSNORIAWORKS
S .FOREVER
IENORIA
IPBMG
.LATE BUT GOOD
QUAKE
ER .SUPERB GAME
NOALBERTO
.CC MAX THE BEST RACING GAME
SANA
.ESTA FOLLABLE
FU
W .WASA KIRIMOTO NOTATE
BO
CJUANJO
N .ALIEN SUCKER
ROSCAR
EN .ES CURRO JIMENEZ
UHECTOR
Q .EL PONEPEGASATODO
GALATEA
.CUCARACHAS EN TU GAZPACHO
GIS
.BASTA YA DE HACER CASITAS
PARADISE
IMOZIP
.DEVUELVEMELA PEDRO PABLO
JMARIN
LI .BUSCO A JACKS
ULLOA
S .GAME 40 FOREVER
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.
I didn't tried to debug the executables because my current debuggers don't support 16bit executables.
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 menu sounds are stored in the DIGITAL folder from the CD in DFX format. These files are simple wave files that can be renamed to WAV to be played.
Game sounds are stored in the GRA and GRA640 folder from the CD in WAV format. The same sounds are duplicated for both folders, having no differences.
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;
const char bm1[]={0x42,0x4d};
int bm2;
const char bm3[]={0x00,0x00,0x00,0x00,0x36,0x04,0x00,0x00,0x28,0x00,0x00,0x00};
int bm4[2];
const 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("Usage: %s image.pic palette.pal\n",argv[0]);
return (EXIT_SUCCESS);
}
fread(dim,2,2,img);
printf("Image dimensions: %dx%d\n",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+"))) {
puts("Check write permissions");
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);
curcol[3]=0;
for (i=0;i<256;i++)
{
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);
}