|
|
This page contains no introduction. |
Uncompiled Source Code#
A lot of uncompiled source code can be found in 0GOLF.BIN starting at 0x62C30.
R_FRT_FRC (0xfffffe12)
#define SH2_REG_ADDR_FRT_FRC_H (0xfffffe12)
#define SH2_REG_ADDR_FRT_FRC_L (0xfffffe13)
#define SH2_REG_ADDR_FRT_OCRA (0xfffffe14)
#define SH2_REG_ADDR_FRT_OCRA_H (0xfffffe14)
#define SH2_REG_ADDR_FRT_OCRA_L (0xfffffe15)
#define SH2_REG_ADDR_FRT_TCR (0xfffffe16)
#define SH2_REG_ADDR_FRT_TOCR (0xfffffe17)
#define SH2_REG_ADDR_FRT_ICRA (0xfffffe18)
#define SH2_REG_ADDR_FRT_ICRA_H (0xfffffe18)
#define SH2_REG_ADDR_FRT_ICRA_L (0xfffffe19)
#define SH2_REG_ADDR_DMA_SAR0 (0xffffff80)
#define SH2_REG_ADDR_DMA_DAR0 (0xffffff84)
#define SH2_REG_ADDR_DMA_TCR0 (0xffffff88)
#define SH2_REG_ADDR_DMA_CHCR0 (0xffffff8c)
#define SH2_REG_ADDR_DMA_VCR0 (0xffffffa0)
#define SH2_REG_ADDR_DMA_DRCR0 (0xffffffb4)
#define SH2_REG_ADDR_DMA_SAR1 (0xffffff90)
#define SH2_REG_ADDR_DMA_DAR1 (0xffffff94)
#define SH2_REG_ADDR_DMA_TCR1 (0xffffff98)
#define SH2_REG_ADDR_DMA_CHCR1 (0xffffff9c)
#define SH2_REG_ADDR_DMA_VCR1 (0xffffffa8)
#define SH2_REG_ADDR_DMA_DRCR1 (0xffffffb8)
#define SH2_REG_ADDR_DMA_DMAOR (0xffffffb0)
#define SH2_REG_ADDR_INT_IPRB (0xfffffe60)
#define SH2_REG_ADDR_INT_VCRA (0xfffffe62)
#define SH2_REG_ADDR_INT_VCRB (0xfffffe64)
#define SH2_REG_ADDR_INT_VCRC (0xfffffe66)
#define SH2_REG_ADDR_INT_VCRD (0xfffffe68)
#define SH2_REG_ADDR_INT_ICR (0xfffffee0)
#define SH2_REG_ADDR_INT_IPRA (0xfffffee2)
#define SH2_REG_ADDR_INT_VCRWDT (0xfffffee4)
#define SH2_REG_ADDR_WDT_WTCSR (0xfffffe80)
#define SH2_REG_ADDR_WDT_WTCNT (0xfffffe80)
#define SH2_REG_ADDR_WDT_RSTCSR (0xfffffe82)
#define SH2_REG_ADDR_DIV_JR (0xffffff00)
#define SH2_REG_ADDR_DIV_HRL32 (0xffffff04)
#define SH2_REG_ADDR_DIV_CONT (0xffffff08)
#define SH2_REG_ADDR_DIV_VCT (0xffffff0c)
#define SH2_REG_ADDR_DIV_HRH (0xffffff10)
#define SH2_REG_ADDR_DIV_HRL (0xffffff14)
#define SH2_REG_ADDR_DIV_RAR (0xffffff18)
#define SH2_REG_ADDR_DIV_RSR (0xffffff1c)
#define SH2_REG_ADDR_CACHE_CCR (0xfffffe92)
#define SH2_DMA_CHCR_DM_Fixed (0x0000)
#define SH2_DMA_CHCR_DM_Up (0x4000)
#define SH2_DMA_CHCR_DM_Down (0x8000)
#define SH2_DMA_CHCR_SM_Fixed (0x0000)
#define SH2_DMA_CHCR_SM_Up (0x1000)
#define SH2_DMA_CHCR_SM_Down (0x2000)
#define SH2_DMA_CHCR_TS_1 (0x0000)
#define SH2_DMA_CHCR_TS_2 (0x0400)
#define SH2_DMA_CHCR_TS_4 (0x0800)
#define SH2_DMA_CHCR_TS_16 (0x0c00)
#define SH2_DMA_CHCR_AR_Module (0x0000)
#define SH2_DMA_CHCR_AR_Auto (0x0200)
#define SH2_DMA_CHCR_AM_Read (0x0000)
#define SH2_DMA_CHCR_AM_Write (0x0100)
#define SH2_DMA_CHCR_AL_Low (0x0000)
#define SH2_DMA_CHCR_AL_High (0x0080)
#define SH2_DMA_CHCR_DS_Level (0x0000)
#define SH2_DMA_CHCR_DS_Edge (0x0040)
#define SH2_DMA_CHCR_DL_Low (0x0000)
#define SH2_DMA_CHCR_DL_High (0x0020)
#define SH2_DMA_CHCR_TB_Steal (0x0000)
#define SH2_DMA_CHCR_TB_Burst (0x0010)
#define SH2_DMA_CHCR_TA_Dual (0x0000)
#define SH2_DMA_CHCR_TA_Single (0x0008)
#define SH2_DMA_CHCR_IE_Disable (0x0000)
#define SH2_DMA_CHCR_IE_Enable (0x0004)
#define SH2_DMA_CHCR_TE_Busy (0x0000)
#define SH2_DMA_CHCR_TE_Normal (0x0002)
#define SH2_DMA_CHCR_DE_Disable (0x0000)
#define SH2_DMA_CHCR_DE_Enable (0x0001)
#define SH2_DMA_DMAOR_DMIE_Disable (0x0001)
#define SH2_DMA_DMAOR_DMIE_Enable (0x0001)
#define SH2_WDT_WTCSR_OVF_NoOverflow (0x00)
#define SH2_WDT_WTCSR_OVF_Overflow (0x80)
#define SH2_WDT_WTCSR_WT_Interval (0x00)
#define SH2_WDT_WTCSR_WT_Timer (0x40)
#define SH2_WDT_WTCSR_TME_Disable (0x00)
#define SH2_WDT_WTCSR_TME_Enable (0x20)
#define SH2_WDT_WTCSR_CKS_2 (0x00)
#define SH2_WDT_WTCSR_CKS_64 (0x01)
#define SH2_WDT_WTCSR_CKS_128 (0x02)
#define SH2_WDT_WTCSR_CKS_256 (0x03)
#define SH2_WDT_WTCSR_CKS_512 (0x04)
#define SH2_WDT_WTCSR_CKS_1024 (0x05)
#define SH2_WDT_WTCSR_CKS_4096 (0x06)
#define SH2_WDT_WTCSR_CKS_8192 (0x07)
#define SH2_SET_REGISTER_8( ADDR, DATA) (*((uint8*)(ADDR)) = (uint8)(DATA))
#define SH2_SET_REGISTER_16( ADDR, DATA) (*((uint16*)(ADDR)) = (uint16)(DATA))
#define SH2_SET_REGISTER_32( ADDR, DATA) (*((uint32*)(ADDR)) = (uint32)(DATA))
#define SH2_GET_REGISTER_8( ADDR) (*((volatile uint8*)(ADDR)))
#define SH2_GET_REGISTER_16( ADDR) (*((volatile uint16*)(ADDR)))
#define SH2_GET_REGISTER_32( ADDR) (*((volatile uint32*)(ADDR)))
#define SH2_SET_INTERRUPT_VECTOR( CPU, ADDR, DATA) (*((uint32*)((uint32)(CPU) + (uint32)(ADDR))) = (uint32)(DATA))
#define SH2_SET_WDT_WTCNT_REGISTER( DATA) (*((uint16*)(SH2_REG_ADDR_WDT_WTCSR)) = (uint16)(0x5a00 | (DATA)))
#define SH2_SET_WDT_WTCSR_REGISTER( DATA) (*((uint16*)(SH2_REG_ADDR_WDT_WTCSR)) = (uint16)(0xa500 | (DATA)))
inline int32 SH2_DIV_32_32( int32 Num, int32 Den);
inline int32 SH2_DIV_64_32( int64 Num, int32 Den);
uint32 Stack_Fast( void *FuncAddr, uint32 A, uint32 B, uint32 C);
void SH2_28MHz( void);
void SH2_26MHz( void);
void SH2_Reset( void);
void SH2_Start_CD_Multiplayer( void);
void SH2_DMA_Copy( void *Dest, void *Src, uint32 Size, uint32 Channel);
void SH2_DMA_Init( void);
int32 SH2_MUL_32_32( register int32 Ma, register int32 Mb);
# 18 "c\\golf1.c" 2
# 1 "system/h/fmv.h" 1
#define __FMV_H
# 1 "system/h/rvd.h" 1
#define RVD_H
#define NO_SOUND 0
#define A_STANDARD_SOUND (1<<0)
#define A_STEREO (1<<1)
#define A_16_BIT (1<<2)
#define A_COMPRESSED (1<<3)
#define RVD_MAGIC 0xDEADBABE
typedef struct
{
unsigned int magic;
unsigned int no_frames;
unsigned short fps;
unsigned short audio_type;
unsigned short sample_rate;
unsigned short video_type;
unsigned int video_size;
unsigned int width;
unsigned int height;
int pad;
}RVD_header_s;
typedef struct
{
unsigned short middle;
unsigned char type;
unsigned char trigger;
unsigned int bs_size;
}RVD_frame_header_s;
typedef struct
{
RVD_header_s header;
RVD_frame_header_s frame_header[1000];
}RVD_headers_s;
void RVD_init(char *, char *, char *, char *, int);
int RVD_next(void);
void RVD_start(void);
void RVD_stop(void);
# 4 "system/h/fmv.h" 2
# 1 "system/h/sound.h" 1
#define __SOUND_H
# 1 "system/h/scsp.h" 1
#define __SCSP_H
#define SCSP_RAM_ADDR_START ((uint32)0x25a00000)
#define SCSP_RAM_ADDR_STOP ((uint32)0x25a80000)
#define SCSP_REG_ADDR_SLOT ((uint32)0x25b00000)
#define SCSP_REG_ADDR_SCCR ((uint32)0x25b00400)
#define SCSP_REG_ADDR_SSTACK ((uint32)0x25b00600)
#define SCSP_REG_ADDR_DSPCR ((uint32)0x25b00700)
#define SCSP_SLOT_NUMBER 32
typedef struct scsp_slot
{
uint16 Control;
uint16 SA;
uint16 LSA;
uint16 LEA;
uint16 Shape1;
uint16 Shape2;
uint16 Tl;
uint16 Mod;
uint16 Freq;
uint16 LFO;
uint16 InputVolume;
uint8 DirectVolume;
uint8 DSPVolume;
uint32 Dummy1;
uint32 Dummy2;
}scsp_slot;
# 5 "system/h/sound.h" 2
#define SOUND_USE_BIOS 0
#define SOUND_MAX_PCM 32
#define SOUND_MEMORY_TYPE (memory_raml)
#define SOUND_LIST_MEMORY_TYPE (memory_raml)
#define SOUND_DATA_MEMORY_TYPE (memory_scsp)
#define SOUND_DRIVER_BIN_FILENAME "SFX\\DRIVER.BIN"
#define SOUND_DRIVER_MAP_FILENAME "SFX\\MAP.BIN"
#define SOUND_ADDRESS_TO_SCSP(ADDR) ((((uint32)(ADDR)) - SCSP_RAM_ADDR_START)>>4)
#define SOUND_VOLUME_MAX (0xff)
#define SOUND_VOLUME_MIN (0)
#define SOUND_VOLUME_MID (SOUND_VOLUME_MAX)
#define SOUND_PAN_LEFT (-127)
#define SOUND_PAN_CENTER (0x0)
#define SOUND_PAN_RIGHT (127)
typedef uint8 sound_volume;
typedef int8 sound_pan;
typedef enum sound_comm_status
{
SOUND_COMM_STATUS_Error,
SOUND_COMM_STATUS_Idle,
SOUND_COMM_STATUS_Reading,
SOUND_COMM_STATUS_Playing
}sound_comm_status;
#define SOUND_PCM_FLAGS_Loop_Wait 0
#define SOUND_PCM_FLAGS_Loop_Ready 1
#define SOUND_PCM_FLAGS_Loop_Status (SOUND_PCM_FLAGS_Loop_Ready | SOUND_PCM_FLAGS_Loop_Wait)
typedef struct sound_pcm
{
void *Address;
uint8 Flags;
uint8 Bytes_Per_Sample;
uint16 Sample_Rate;
uint32 Number_Samples;
uint32 SCSP_Addr;
struct sound_pcm *Next;
}sound_pcm;
typedef struct sound_pcm_list
{
uint32 Number_Samples;
sound_pcm *Samples;
void *Data;
}sound_pcm_list;
#define SOUND_BUFFER_FLAGS_Free 0
#define SOUND_BUFFER_FLAGS_Playing 1
#define SOUND_BUFFER_FLAGS_Status (SOUND_BUFFER_FLAGS_Playing | SOUND_BUFFER_FLAGS_Free)
#define SOUND_BUFFER_FLAGS_NoLooping 0
#define SOUND_BUFFER_FLAGS_Looping 2
#define SOUND_BUFFER_FLAGS_New 4
typedef struct sound_pcm_buffer
{
int16 Flags;
int16 Channel;
scsp_slot *Slot;
sound_pcm *Sound;
uint16 SCSP_Addr_Inc;
int16 Page;
int32 Paragraph;
uint32 SCSP_Mode;
uint8 SCSP_Ctrl;
uint8 SCSP_Volume;
uint16 SCSP_Address;
uint16 SCSP_Size;
uint16 SCSP_Pitch;
uint8 SCSP_VolumeEffectLeft;
uint8 SCSP_VolumeEffectRight;
uint16 SCSP_Tl;
}sound_pcm_buffer;
typedef struct sound_comm
{
uint32 Offset;
uint32 Size;
}sound_comm;
typedef struct sound_com_list
{
uint32 Number_Samples;
sound_comm *Samples;
}sound_comm_list;
#define SOUND_COMM_BUFFERS 2
#define SOUND_COMM_RATE 22050
#define SOUND_COMM_BYTES 1
#define SOUND_COMM_PAGE_SIZE 2048
#define SOUND_COMM_PAGES 5
#define SOUND_COMM_SIZE (SOUND_COMM_PAGES * SOUND_COMM_PAGE_SIZE)
#define SOUND_COMM_PREREAD_SIZE 10
typedef struct sound_comm_data
{
sound_comm_status Status;
sound_comm_list *List;
sound_pcm_list *PCM_List;
GfsHn Handle;
int32 Sound;
sound_comm *Present;
sound_pcm_buffer *Buffer;
int32 Read_Size;
int32 Active_Sound_Number;
sound_pcm *Play_Sound;
sound_pcm *Read_Sound;
sound_volume Volume;
}sound_comm_data;
#define SOUND_FLAGS_NONE 0x0
#define SOUND_FLAGS_PAUSED_OFF 0x0
#define SOUND_FLAGS_PAUSED_ON 0x1
#define SOUND_FLAGS_PAUSED_MASK (SOUND_FLAGS_PAUSED_ON | SOUND_FLAGS_PAUSED_OFF)
#define SOUND_FLAGS_COMM_OFF 0x0
#define SOUND_FLAGS_COMM_ON 0x2
#define SOUND_FLAGS_COMM_MASK (SOUND_FLAGS_COMM_ON | SOUND_FLAGS_COMM_OFF)
#define SOUND_FLAGS_OFF 0x0
#define SOUND_FLAGS_ON 0x4
#define SOUND_FLAGS_MASK (SOUND_FLAGS_ON | SOUND_FLAGS_OFF)
#define SOUND_FLAGS_PCM_OFF 0x0
#define SOUND_FLAGS_PCM_ON 0x8
#define SOUND_FLAGS_PCM_MASK (SOUND_FLAGS_PCM_ON | SOUND_FLAGS_PCM_OFF)
typedef struct sound_data
{
uint32 Samples_Per_VSync;
uint32 Samples_WRT_VSync;
int32 Flags;
sound_comm_data *Comm;
sound_pcm_buffer Buffers[ 32 ];
}sound_data;
int32 Sound_Init( void);
void Sound_Driver_Init( void);
void Sound_On( int8 Flag);
void Sound_Pause( int32 Flag);
void Sound_Midi( int32 seq_no, int32 seq_pri, uint8 md_com, uint8 ch, uint8 dt1, uint8 dt2);
void Sound_Seq_Start(int32 Seq, int32 Bank, int32 Song, int32 Priority);
void Sound_Seq_Stop(int32 Seq);
void Sound_LoadData(char *Filename, uint16 data_kind, uint16 data_no);
void Sound_MoveData(void *source, uint32 size, uint16 data_kind, uint16 data_no);
void Sound_Load( char *Filename);
void Sound_ChannelEffect( uint8 Effect);
void Sound_ChannelMix( uint8 Tone, uint8 Mix);
void Sound_ChannelMap( uint8 Map);
void Sound_Volume( sound_volume Volume);
void Sound_CDDA_PlayTrack( int32 Track);
void Sound_CDDA_Volume( sound_volume Volume, sound_pan Pan_Left, sound_pan Pan_Right);
sound_pcm_list* Sound_PCM_Create( int32 NumberSounds, int32 SampleRate, int32 BytesPerSample, int32 NumberSamples);
sound_pcm_list* Sound_PCM_Load( char *Filename);
sound_pcm_buffer* Sound_PCM_Free_Buffer( void);
sound_pcm_buffer* Sound_PCM_Play( sound_pcm *Sound, int32 Pitch_Bend, int32 Loop, sound_volume Volume, sound_pan Pan);
void Sound_PCM_Pause( int32 Flag);
void Sound_PCM_Range( sound_pcm *Sound_Full, sound_pcm *Sound_Short, uint32 Start, uint32 Stop);
void Sound_PCM_Buffer_Volume( sound_pcm_buffer *Buffer, sound_volume Volume, sound_pan Pan);
void Sound_PCM_Change_Volume( sound_pcm_buffer *Buffer, sound_volume Volume, sound_pan Pan);
void Sound_PCM_Buffer_Replay( sound_pcm_buffer *Buffer);
void Sound_PCM_Free_List( sound_pcm_list *List);
void Sound_PCM_Start( sound_pcm_buffer *Buffer);
void Sound_PCM_Change( sound_pcm_buffer *Buffer);
void Sound_PCM_Stop( sound_pcm_buffer *Buffer);
int16 Sound_PCM_Calc_Pitch( sound_pcm *Sound, int32 PitchBend);
void Sound_PCM_Update( void);
void Sound_PCM_Update_In( void);
void Sound_PCM_Update_Out( void);
uint32 Sound_Comm_Size( uint32 Sound);
void Sound_Comm_Volume( sound_comm_data *Comm, sound_volume Volume);
void Sound_Comm_On( int8 Flag);
void Sound_Comm_Read_Buffer( sound_comm_data *Comm);
void Sound_Comm_Update( void);
int32 Sound_Comm_Play( uint32 Sound);
void Sound_Comm_Stop( sound_comm_data *Comm);
int32 Sound_Comm_Open_File( sound_comm_data *Comm, char *Filename);
void Sound_Comm_File( char *Filename);
void Sound_Comm_Close_File( sound_comm_data *Comm);
sound_comm_status Sound_Comm_Status( void);
sound_comm_data* Sound_Comm_Init( char *Filename);
void Sound_Comm_Close( void);
# 8 "system/h/fmv.h" 2
#define LOADING_BANK 0
#define FMV_SOUND_COMM 0
#define FMV_SOUND_LOOP 0
#define FMV_SOUND_SAMPLE 1
#define FMV_COMM_SIZE (SOUND_COMM_SIZE)
#define FMV_COMM_BUFFER_SIZE (2*FMV_COMM_SIZE)
#define RVD_BLOCK_SIZE 256*1024
#define RVD_FRAME_SIZE 25*1024
#define FMV_DATA_VDP1_SIZE (320*256*2)
#define FMV_DATA_SRC_SIZE (3*RVD_BLOCK_SIZE)
#define FMV_DATA_DST_SIZE (FMV_DATA_VDP1_SIZE)
typedef struct fmv_data
{
void *Sound_Data_Buffer;
void *Sound_Data_Buffer_End;
void *Sound_Data_Pointer_New;
void *Sound_Data_Pointer_Old;
sound_pcm_list *Sound_List;
sound_pcm_buffer *Sound_Buffer;
sound_pcm *Sound;
int16 Sound_Index;
int16 Rewind;
int32 LastTrigger;
int32 Time;
int32 Sound_Time;
screen_texture *Texture;
void *Data_Src;
void *Data_Dst;
GfsHn File_Handle;
RVD_headers_s RVD_headers;
RVD_header_s RVD_header;
RVD_frame_header_s RVD_frame_header;
int RVD_sound_size;
int RVD_decode_size;
int RVD_trigger;
int RVD_frame;
int RVD_cd_frame;
int RVD_bs_size;
char *RVD_ptr;
char *RVD_decode_buffer;
char *RVD_sprite;
char *RVD_block_next[3];
char *RVD_data_next[3];
char *RVD_sound[3];
int RVD_block;
int RVD_CD_flag;
int RVD_buf;
int RVD_quiet;
int RVD_palette_flag;
int RVD_slave_done;
int RVD_filelength;
}fmv_data;
void FMV_Play_Sound( fmv_data *FMV_Data);
void FMV_send_frame( fmv_data *FMV_Data);
void FMV_send_sound(fmv_data *FMV_Data, int buf);
int32 FMV_Next_Frame( fmv_data *FMV_Data);
int FMV_CD_doread(GfsHn Handle);
int FMV_CD_finished( fmv_data *FMV_Data);
void FMV_CD_read(GfsHn Handle,char *dest,int bytes);
int FMV_cd_block_size( fmv_data *FMV_Data);
void FMV_Play( char *Filename);
void FMV_Init_Internal( fmv_data *FMV_Data);
fmv_data* FMV_Init( char *Filename);
void FMV_Close( fmv_data *FMV_Data);
void FMV_Rewind( fmv_data *FMV_Data);
void FMV_Rewind_Slave( fmv_data *FMV_Data);
void RVD_uncompact( void *, void *, int32, void*);
# 20 "c\\golf1.c" 2
# 1 "h/ccdisk.h" 1
#define __CCDISK_H
#define TIME_ALLOWED 3
enum
{
SYSTEM,
CARTRIDGE,
NO_SPACE=9,
NOT_FOUND,
FILE_OK,
LOAD_FAIL
};
int WantCCDisk(void);
void GetCourseDisk(void);
int WhereToSaveFile(void);
int SaveValidation(int8);
void DisplayError(int8);
void DrawCCScreen(short);
void QuitActuaGolf(void);
void DrawBlankCCScreen(void);
void DrawWhereToSave(int8);
void DrawMessageB(void);
int SaveOutValidation(int8, void*, int);
void DrawError(int8);
int CheckValidationFile(void);
int ValidateFile(void);
int CheckFileTime(int8);
int CheckFileCreate(void);
void DisplayErrorMessageA(void);
int LoadValidation(int8);
void DisplayLoadError(int8);
void DisplayOkMessage(char **);
void DrawOKScreen(char**);
void DeleteValidationFile(int8);
# 22 "c\\golf1.c" 2
# 1 "h/save.h" 1
#define __SAVE_H
# 1 "h/filename.h" 1
#define __FILENAMES_H
#define FILENAME_SIZE 20
#define FILENAME_COURSE_CHAR 1
#define FILENAME_COURSE "C0"
#define FILENAME_FONT0 "FONT1"
#define FILENAME_FONT1 "FONT0"
#define FILENAME_FONT2 "FONT2"
#define FILENAME_FONT3 "FONT3"
#define FILENAME_ICON "ICON"
#define FILENAME_BUFFER "BUFF"
#define FILENAME_HOLE "COURSE"
#define FILENAME_TITLE_SCREEN "GREMLOGO"
#define FILENAME_FREND "FREND"
#define FILENAME_SPIN "SPINBUT"
#define FILENAME_CSELECT "CSELBUTS"
#define FILENAME_LOADWAIT "LOADWAIT"
#define FILENAME_C1H1 "C1DAT1"
#define FILENAME_C1H2 "C1DAT2"
#define FILENAME_C1H3 "C1DAT3"
#define FILENAME_C1H4 "C1DAT4"
#define FILENAME_C1H5 "C1DAT5"
#define FILENAME_C1H6 "C1DAT6"
#define FILENAME_C1H7 "C1DAT7"
#define FILENAME_C1H8 "C1DAT8"
#define FILENAME_C1H9 "C1DAT9"
#define FILENAME_C1H10 "C1DAT10"
#define FILENAME_C1H11 "C1DAT11"
#define FILENAME_C1H12 "C1DAT12"
#define FILENAME_C1H13 "C1DAT13"
#define FILENAME_C1H14 "C1DAT14"
#define FILENAME_C1H15 "C1DAT15"
#define FILENAME_C1H16 "C1DAT16"
#define FILENAME_C1H17 "C1DAT17"
#define FILENAME_C1H18 "C1DAT18"
#define FILENAME_C2H1 "C2DAT1"
#define FILENAME_C2H2 "C2DAT2"
#define FILENAME_C2H3 "C2DAT3"
#define FILENAME_C2H4 "C2DAT4"
#define FILENAME_C2H5 "C2DAT5"
#define FILENAME_C2H6 "C2DAT6"
#define FILENAME_C2H7 "C2DAT7"
#define FILENAME_C2H8 "C2DAT8"
#define FILENAME_C2H9 "C2DAT9"
#define FILENAME_C2H10 "C2DAT10"
#define FILENAME_C2H11 "C2DAT11"
#define FILENAME_C2H12 "C2DAT12"
#define FILENAME_C2H13 "C2DAT13"
#define FILENAME_C2H14 "C2DAT14"
#define FILENAME_C2H15 "C2DAT15"
#define FILENAME_C2H16 "C2DAT16"
#define FILENAME_C2H17 "C2DAT17"
#define FILENAME_C2H18 "C2DAT18"
#define VRGOLF 1
#define JAP 0
# 108 "h/filename.h"
#define FILENAME_LIC "VRLEGAL"
#define FILENAME_CCSCREEN "VRLOD"
#define FILENAME_TITLE "VRTITLE"
#define FILENAME_LANGSELECT "VRLANGSL"
#define FILENAME_CREDITS "VRCREDIT"
#define FILENAME_MENU_ONE "VRMENU1"
#define FILENAME_MENU_TWO "VRMENU2"
#define FILENAME_SNDMENU "VRSNDMU"
#define FILENAME_GMOMENU "VRGMOMU"
#define FILENAME_WETMENU "VRWETMU"
#define FILENAME_RANKMENU "VRRANKMU"
#define FILENAME_SELMENU "VRSELMU"
#define FILENAME_CLUBMENU "VRCLUBMU"
#define FILENAME_GOLFRSET "VRGOLFR"
#define FILENAME_CONMENU "VRCONMEN"
#define FILENAME_LDSVMENU "VRMENU2"
#define FILENAME_MULTMENU "VRMULMN"
#define FILENAME_ENGTXT "ENGTXT"
#define FILENAME_ENGTXT2 "ENGTXT2"
#define FILENAME_CCTEXT "CCTEXT"
#define FILENAME_LODTEXT "LODTEXT"
#define FILENAME_INITMEM "INITMEM"
#define FILENAME_FRATXT "FRATXT"
#define FILENAME_FRATXT2 "FRATXT2"
#define FILENAME_FRACC "FRACC"
#define FILENAME_FRALODTX "FRALODTX"
#define FILENAME_FRAIMEM "FRAIMEM"
#define FILENAME_GERTXT "GERTXT"
#define FILENAME_GERTXT2 "GERTXT2"
#define FILENAME_GERCC "GERCC"
#define FILENAME_GERLODTX "GERLODTX"
#define FILENAME_GERIMEM "GERIMEM"
# 190 "h/filename.h"
#define FILENAME_COURSE_HOLE "HOLE"
#define FILENAME_COURSE_HIRES "HIRES"
#define FILENAME_COURSE_DATA "CRSE"
#define FILENAME_MAKE_HOLE_DATA( STRING, COURSE, HOLE) { sprintf( (STRING),"COURSE%1ld\\HOLE%02ld.CDT", (uint32)(COURSE), (uint32)(HOLE)); }
#define FILENAME_MAKE_TREE_DATA( STRING, COURSE, HOLE) { sprintf( (STRING),"COURSE%1ld\\HOLE%02ld", (uint32)(COURSE), (uint32)(HOLE)); }
#define FILENAME_MAKE_BACK_DATA( STRING, COURSE, HOLE) { sprintf( (STRING),"COURSE%1ld\\BACK%ld.TDT", (uint32)(COURSE), (uint32)(HOLE)); }
#define FILENAME_CHANGE_COURSE( FILENAME, COURSE) (*((FILENAME)+ FILENAME_COURSE_CHAR) = (uint8)(COURSE+'0'))
#define FILENAME_MAKE( STRING, NAME,COURSE) { strcpy( (STRING), FILENAME_COURSE); strcat( (STRING), (NAME)); FILENAME_CHANGE_COURSE( (STRING), COURSE); }
# 4 "h/save.h" 2
#define FILENAME "VRGOLFGAME"
#define PLAYERNAME "VRGOLFPLAY"
enum
{
LOADQM,
LOADING=3,
LOADED=6,
LOAD_FAILED=9,
CLEAR_FILESQM=12,
CLEARED_FILES=15,
CLEARING=18,
CLEAR_FAILED=21,
SAVEQM=24,
POWER=27,
SAVEING=32,
SAVED=35,
SAVE_FAILED=38,
MEMORY_INFO=45
};
enum
{
NOBOX,
OKBOX,
FORMATBOX,
FORMATING,
FORMAT_CLEARED,
FORMAT_ERROR,
SAVEBOX,
SAVEOVERBOX,
SAVE_ERROR,
LOADBOX,
LOAD_ERROR,
LOAD_OK,
SAVE_OK,
NO_FREE_BLOCKS
};
enum
{
SYSMEM,
CARTMEM,
BOTHMEM,
NOMEM,
OVERCART,
OVERSYS,
OVERGEN
};
enum
{
LOADBUTTON,
SAVEBUTTON,
NOBUTTON
};
enum
{
NORMAL_LOAD_BUTTON = 1,
NORMAL_SAVE_BUTTON = 2,
HIDE_LOAD_BUTTON = 4,
REVEAL_LOAD_BUTTON = 8,
HIDE_SAVE_BUTTON = 16,
REVEAL_SAVE_BUTTON = 32,
};
int32 Load_Save(void);
void draw_loadsave(short selected, short pressed, uint8 playernum, uint8 type,short MBselected, short editpos, char newname[11], uint16 HideReveal);
int ExtMem(void);
int FormatMemory(short);
void DrawMessageBox(short, short, short);
void DrawBox(void);
void DrawOKButton(void);
void DrawFORMATBOX(short, short);
int GetExistingSaves(short);
int SaveGame(short,short);
void StringEdit(short,short);
int LoadGame(short, short);
void PutGameData(void);
void GetGameData(void);
void DrawLOADBOX(short MBselected, short Device);
void DrawSAVEBOX(short MBselected, short Device);
void DoMemInit(void);
void LoadSavePlayer(short playernum);
int SavePlayer(short Dev, short slot, short player);
int LoadPlayer(short Dev, short Slot, short player);
void GetExistingPlayers(short Dev);
void GetPlayerData(short player);
void PutPlayerData(short player);
int CheckFreeBlocks(short, int NoBytes);
int Data2Blocks(int DataSize);
int FileExists(short, short);
int NumFreeBlocks(short Dev, short NoBytes);
void InitAvailableSlots(short);
int CheckBackupDevices(void);
void FreeMemLib(void);
int CheckBackupInit(void);
void ShowFormatWarning(short);
void DrawMemoryScreen(short Message, short ReqSpace);
int CheckAvailableSpace(short Dev);
int ShowOverwriteWarning(short Dev);
void DrawNoSaveScreen(short Dev, short selected, short);
int DeviceFormated(short);
int RunCheckBackupDevs(void);
int ShowNoSaveWarning(short Dev);
int BlockDiff(short Dev);
int SaveOutData(short, short, void*, int);
int Save_Global(short, short);
int Save_Tour(short, short);
int Save_Game(short, short);
int LoadInData(short,char *,void*);
void DrawSAVEOVERBOX(short MBselected, short Device);
# 23 "c\\golf1.c" 2
# 1 "h/text.h" 1
#define
#define extern
#define 1
#define TEXT_GROUP_CLUB_S PE 0
#define TEXT_GROUP_CLUB_TYPE 1
#define TEXT_GROUP_BALL_VIEW 2
#define TEXT_GROUP_CAMERA_VIEW 3
#define TEXT_GROUP_CAMERA_REPLAY 4
#define TEXT_GROUP_HUMAN_NAMES 5
#define TEXT_GROUP_PRO_TOUR 6
#define TEXT_GROUP_COURSE_NAMES 7
#define TEXT_GROUP_SHOT_TYPES 8
#define TEXT_GROUP_GAME_TYPES 9
#define TEXT_GROUP_LAND_TYPES 10
#define TEXT_GROUP_OPTIONS 11
#define TEXT_GROUP_CLIMATE 12
#define TEXT_GROUP_SHOT_TYPE_2 13
#define TEXT_GROUP_TITLES 14
#define TEXT_GROUP_MENU_END_HOLE 15
#define TEXT_GROUP_PAR_TYPE 16
#define TEXT_GROUP_MISC 17
#define TEXT_GROUP_AMM_TOUR 18
#define TEXT_GROUP_UNITS 19
#define TEXT_GROUP_BOARD 20
#define TEXT_GROUP_PLAYER_TYPE 21
#define TEXT_GROUP_CLIMATE_CHANGE 22
#define TEXT_GROUP_SCORE 23
#define TEXT_GROUP_AT_TEE 24
#define TEXT_GROUP_COMP_INFO 25
#define TEXT_GROUP_TOUR_TYPE 26
#define TEXT_GROUP_CONFIRM 27
#define TEXT_GROUP_TEE_TIMES 28
#define TEXT_GROUP_END_SESSION 29
#define TEXT_GROUP_DEMO_MODE 30
#define TEXT_GROUP_VR_MODE 31
#define TEXT_GROUP_CUT_MESSAGE 32
#define TEXT_GROUP_MEMORY_WARNING2 0
#define TEXT_GROUP_MEMORY_WARNING2_NO_SLOTS 1
#define TEXT_GROUP_CONTINUE 2
#define TEXT_GROUP_BLOCK_MESSAGE 3
#define TEXT_GROUP_MEMORY_WARNING3 4
#define TEXT_GROUP_MEMORY_WARNING1_SYS 5
#define TEXT_GROUP_MEMORY_WARNING1_CRT 6
#define TEXT_GROUP_LOAD_SAVE 7
#define TEXT_GROUP_PROWARN 8
#define TEXT_GROUP_CC_LOAD 9
#define TEXT_GROUP_CC_MESSAGE_A 10
#define TEXT_GROUP_CC_MESSAGE_B 11
#define TEXT_GROUP_CC_MESSAGE_C 12
#define TEXT_GROUP_CC_ERROR_MESSAGE_A 13
#define TEXT_GROUP_CC_ERROR_MESSAGE_B 14
#define TEXT_GROUP_CC_ERROR_MESSAGE_C 15
#define TEXT_GROUP_CC_ERROR_MESSAGE_D 16
#define TEXT_TITLE_SCREEN 17
#define TEXT_CREDITS_SCREEN 18
#define TEXT_GROUP_RANKING_TITLE 19
void Load_Language( void);
void Load_Frend_Text(void);
void Free_Language( void);
extern char psx_set_names[][2][17]
# 170 "h/text.h"
;
extern char *psx_set_names_bugs[]
;
extern char psx_set_cheat_names[][2][17]
# 275 "h/text.h"
;
extern char *psx_human_names[]
# 294 "h/text.h"
;
extern char *psx_player_type[]
# 307 "h/text.h"
;
extern char *nations[]
# 334 "h/text.h"
;
extern char *psx_pro_tour[]
;
extern char *psx_amm_tour[]
;
extern char *psx_courses[]
;
extern char *shot_types[]
# 389 "h/text.h"
;
extern char *shot_types_two[]
;
extern char *psx_gametypes[]
# 423 "h/text.h"
;
extern char *psx_landtypes[]
# 442 "h/text.h"
;
extern char *options[]
# 464 "h/text.h"
;
extern char *views_one[]
# 478 "h/text.h"
;
extern char *views_two[]
# 492 "h/text.h"
;
extern char *replay_views_one[]
# 517 "h/text.h"
;
extern char *psx_cond_text[12]
# 538 "h/text.h"
;
extern char *climate_change[12][3]
# 559 "h/text.h"
;
extern char *clubs[]
# 586 "h/text.h"
;
extern char *clubs_two[]
# 616 "h/text.h"
;
extern char *Ball_View_Names[]
# 639 "h/text.h"
;
extern char *View_View_Names[]
# 660 "h/text.h"
;
extern char *Shot_Menu_Names[]
# 675 "h/text.h"
;
extern char *Text_Misc[400]
;
extern char *Text_Titles[30]
;
extern char *Text_End_Hole[5]
;
extern char *Text_Par_Type[8]
;
extern char *Text_Show_Board[]
# 736 "h/text.h"
;
extern char *Text_Units[ 3]
;
extern char *Text_Score[ 4]
;
extern char *Text_At_Tee[ 3]
;
extern char *Text_Comp_Info[ 2]
;
extern char *Text_Tour_Type[ 2]
;
extern char *Text_Confirm[ 3]
;
extern char *Text_Tee_Times[ 15]
# 824 "h/text.h"
;
extern char *Text_End_Session[35]
# 867 "h/text.h"
;
#define TEXT_DEMO_X 160
#define TEXT_DEMO_Y 60
extern char *Text_Demo[1]
;
extern char *Text_Cut_Message[]
# 893 "h/text.h"
;
# 911 "h/text.h"
extern char *Text_Memory_W2[7]
# 926 "h/text.h"
;
extern char *Text_Memory_W2_No_Slots[6]
# 944 "h/text.h"
;
extern char *Text_Memory_Continue[3]
# 958 "h/text.h"
;
extern char *Text_Memory_Blocks[4]
# 974 "h/text.h"
;
extern char *Text_Memory_W3[5]
# 990 "h/text.h"
;
extern char *Text_Memory_W1_Sys[7]
# 1008 "h/text.h"
;
extern char *Text_Memory_W1_Crt[7]
# 1026 "h/text.h"
;
extern char *Text_Load_Save[61]
# 1093 "h/text.h"
;
extern char *Text_Pro_Warn[6]
# 1108 "h/text.h"
;
extern char *Text_CC_Load[17]
;
extern char *Text_CC_Message_A[18]
# 1147 "h/text.h"
;
extern char *Text_CC_Message_B[15]
# 1171 "h/text.h"
;
extern char *Text_CC_Message_C[15]
# 1197 "h/text.h"
;
extern char *Text_CC_Error_Message_A[15]
# 1222 "h/text.h"
;
extern char *Text_CC_Error_Message_B[15]
# 1248 "h/text.h"
;
extern char *Text_CC_Error_Message_C[15]
# 1274 "h/text.h"
;
extern char *Text_CC_Error_Message_D[15]
# 1299 "h/text.h"
;
extern char *Text_Title_Screen[1]
;
extern char *Text_Credits_Screen[]
# 1586 "h/text.h"
;
extern char *Text_Ranking_Title[2]
# 1599 "h/text.h"
;
# 24 "c\\golf1.c" 2
# 1 "h/game.h" 1
#define __GOLF_GAME_H
# 1 "h/anim.h" 1
#define __GOLF_ANIM_H
# 1 "h/psx.h" 1
#define __PSX_H
typedef unsigned char u_char;
typedef unsigned short u_short;
typedef unsigned long u_long;
typedef struct DOTDAT
{
short on,
ya,
starty,
sl;
int32
cu,
su,
vel,
xvel,
rxp,
rzp;
}DOTDAT;
typedef struct CdlFILE
{
short size;
struct
{
short second;
short minute;
short sector;
}pos;
}CdlFILE;
typedef struct DR_MODE
{
}DR_MODE;
typedef struct BLK_FILL
{
}BLK_FILL;
typedef struct SPRT
{
short clut;
}SPRT;
typedef struct DRAWENV
{
short ofs[1];
struct
{
short x,y,w,h;
}clip;
}DRAWENV;
typedef struct DISPENV
{
}DISPENV;
typedef struct LINE_F2
{
}LINE_F2;
typedef struct RECT
{
long x,y,h,w;
}RECT;
typedef struct MATRIX
{
}MATRIX;
typedef struct VECTOR
{
long vx,vy,vz,a;
}VECTOR;
typedef struct SVECTOR
{
short vx,vy,vz,a;
}SVECTOR;
typedef struct POLY_F3
{
}POLY_F3;
typedef struct POLY_F4
{
}POLY_F4;
typedef struct POLY_G4
{
}POLY_G4;
typedef struct POLY_G3
{
short x0,y0,x1,y1,x2,y2;
}POLY_G3;
typedef struct POLY_GT4
{
short x0,y0,x1,y1,x2,y2,x3,y3;
short u0,v0,u1,v1,u2,v2,u3,v3;
short clut;
short tpage;
}POLY_GT4;
typedef struct POLY_FT3
{
short clut;
}POLY_FT3;
typedef struct POLY_FT4
{
long *tag;
char r0,g0,b0,code;
short x0,y0;
short x1,y1;
short x2,y2;
short x3,y3;
char u0,v0;
char u1,v1;
char u2,v2;
char u3,v3;
short clut;
short tpage;
}POLY_FT4;
# 7 "h/anim.h" 2
# 1 "h/golfer.h" 1
#define __GOLFER_H
# 1 "system/h/world.h" 1
#define __WORLD_H
#define WORLD_MEMORY_TYPE (memory_raml)
#define WORLD_SORTBIN_SIZE 256
#define WORLD_ANIMATION_LIST_MEMORY (memory_raml)
#define WORLD_MODEL_LIST_MEMORY (memory_raml)
#define WORLD_ANIMATION_LIST_FILE_EXTENTION (".WAN")
#define WORLD_MODEL_LIST_FILE_EXTENTION (".WMD")
#define WORLD_MODEL_NAME( A, B, C, D) ((uint32)(((A)<<24)|((B)<<16)|((C)<<8)|((D)<<0)))
typedef struct world_vector
{
int32 X,Y;
int32 Z;
int32 Divid;
}world_vector;
typedef struct world_primitive
{
struct world_primitive *Next;
vdp1_command_table *Command_Table;
vdp1_gouraud_table *Gouraud_Table;
int32 Depth;
}world_primitive;
#define WORLD_POLYGON_FLAG_Colour (0x0000)
#define WORLD_POLYGON_FLAG_Texture (0x0001)
#define WORLD_POLYGON_FLAG_Flat (0x0000)
#define WORLD_POLYGON_FLAG_Gouraud (0x0002)
#define WORLD_POLYGON_FLAG_NoLight (0x0000)
#define WORLD_POLYGON_FLAG_Light (0x0004)
#define WORLD_POLYGON_FLAG_OneSide (0x0010)
#define WORLD_POLYGON_FLAG_TwoSides (0x0000)
#define WORLD_POLYGON_SORT (0x0060)
#define WORLD_POLYGON_SORT_Average (0x0000)
#define WORLD_POLYGON_SORT_Near (0x0020)
#define WORLD_POLYGON_SORT_Far (0x0040)
#define WORLD_POLYGON_FLAG_2D (0x0080)
#define WORLD_POLYGON_FLAG_MODE ((uint32)0x0F00)
#define WORLD_POLYGON_FLAG_DONOTPROCESS (0x80000000)
#define WORLD_POLYGON_FLAG_Mesh (0x4000)
#define WORLD_POLYGON_FLAG_FLIP (0x2000)
#define WORLD_POLYGON_FLAG_MIRROR (0x1000)
typedef struct world_animation_control
{
uint8 Angle_X;
uint8 Angle_Y;
uint8 Angle_Z;
uint8 Index;
# 81 "system/h/world.h"
int16 Offset_X;
int16 Offset_Y;
int16 Offset_Z;
}world_animation_control;
typedef struct world_animation
{
uint16 Number_Frames;
uint16 Number_Matrices;
world_animation_control *Matrices;
}world_animation;
typedef struct world_animation_list
{
uint32 Number_Animations;
world_animation *Animations;
}world_animation_list;
typedef struct world_polygon
{
int32 Flags;
uin r_Ambient;
uint16 Colour_Diffuse;
uint16 IndexTL;
uint16 IndexTR;
uint16 IndexBR;
uint16 IndexBL;
}world_polygon;
typedef struct world_polygon_list
{
uint32 Number_Polygons;
world_polygon *Polygons;
}world_polygon_list;
typedef struct world_vector_list
{
uint16 Number_Vectors;
uint16 Box_X;
uint16 Box_Y;
uint16 Box_Z;
int32 Radius;
vector *Vectors;
normal *Normals;
}world_vector_list;
typedef struct world_object
{
struct world_object *Next;
struct world_object *Along;
struct world_object *Inside;
void (*Matrix_Multiply)(matrix*,matrix*,matrix*);
world_polygon_list *Polygon_List;
world_vector_list *Vector_List;
screen_texture_list *Texture_List;
matrix Matrix;
matrix New_Matrix;
}world_object;
typedef struct world_model
{
uint32 Name;
world_polygon_list *Polygon_List;
world_vector_list *Vector_List;
}world_model;
typedef struct world_model_list
{
uint32 Number_Models;
world_model *Models;
}world_model_list;
typedef struct world_data
{
uint32 Number_Primitives;
world_primitive *Primitive_First;
world_primitive *Primitive_Last;
world_primitive *Primitive_Present;
world_primitive *Primitive_Old;
world_primitive **SortBinA;
world_primitive **SortBinB;
vdp1_command_table *First_Command_Table;
vdp1_command_table *Last_Command_Table;
uint32 Number_Vectors;
world_vector *Vectors;
}world_data;
void World_Free_Model_List(world_model_list *Model_List);
void World_Free_Animation_List(world_animation_list *Animation_List);
world_model_list* World_Load_Model_List(char *Filename);
world_animation_list* World_Load_Animation_List(char *Filename);
int32 World_Control_To_Matrix(world_animation_control *Control, matrix *Matrix);
world_animation_control* World_Find_Animation_Control( world_animation *Anim, int32 Frame, int32 Index);
int32 World_Find_Model_Object_Index( world_model_list *List, uint32 Name);
void World_Light_Set_Colours( uint8 AR,uint8 AG,uint8 AB,uint8 DR,uint8 DG,uint8 DB);
void World_Light_Set_Direction(trig_fixed X, trig_fixed Y, trig_fixed Z);
rld_Set_Perspective(uint32 Depth);
void World_Add_And_Draw(world_object *Object, matrix *Matrix);
void World_Add(world_object *Object, matrix *Matrix);
void World_Draw(void);
int32 World_Init(uint32 Number_Primitives, uint32 Number_Vectors);
void World_Perspective_Transform_Vectors( vector *Vectors_Old, world_vector *Vector_New, matrix *Matrix, uint32 Count);
vdp1_colour World_Calc_Colour(uint16 Ambient, uint16 Diffuse, int8 ACos);
vdp1_colour World_Calc_Ambient_Colour(uint16 Ambient);
vdp1_colour World_Calc_Diffuse_Colour(uint16 Diffuse, int8 ACos);
void World_Normal_To_ACos( normal *Normals, matrix *Matrix, uint32 Count);
void World_Start_Primitive_List(void);
void World_Sort_Primitives(void);
world_primitive* World_Get_Next_Primitive(void);
void World_Polygon_Create(world_polygon *Polygon, world_object *Object, world_vector *Vectors, world_vector_list *Vector_List);
uint8 World_Polygon_Seen(world_polygon *Polygon, world_vector *Vectors);
void World_Process_3D_Polygon_Fast(world_polygon *Polygon, world_object *Object, world_vector *Vectors, world_vector_list *Vector_List);
void World_Process_3D_Polygon_Fast_Asm(world_polygon *Polygon, world_object *Object, world_vector *Vectors, world_vector_list *Vector_List);
void World_Process_3D_Polygon(world_polygon *Polygon, world_object *Object, world_vector *Vectors, world_vector_list *Vector_List);
void World_Process_2D_Polygon(world_polygon *Polygon, world_object *Object, world_vector *Vectors, world_vector_list *Vector_List);
void World_Process_Polygon_List(world_object *Object, world_polygon_list *Polygon_List, world_vector *Vectors, world_vector_list *Vector_List);
uint32 World_Bound( int32 X, int32 Y, int32 Z, int32 Radius);
void World_Shadow_Find_Highest( vector *Vectors, int32 Count);
void World_Add_Shadows(world_object *Object, matrix *Matrix);
# 4 "h/golfer.h" 2
#define GOLFER_TWEEN 0
#define GOLFER_TWEEN_MAX_INDEX ((int32)20)
#define GOLFER_TWEEN_TIME 500
#define GOLFERS_MAX 4
#define GOLFER_MAX_TYPES 5
typedef enum golfer_skin
{
GOLFER_TYPE_WHITE_RED=0,
GOLFER_TYPE_WHITE_GREEN,
GOLFER_TYPE_WHITE_BLUE,
GOLFER_TYPE_WHITE_YELLOW,
GOLFER_TYPE_WHITE_BLACK,
GOLFER_TYPE_BLACK_RED,
GOLFER_TYPE_BLACK_GREEN,
GOLFER_TYPE_BLACK_BLUE,
GOLFER_TYPE_BLACK_YELLOW,
GOLFER_TYPE_BLACK_BLACK,
GOLFER_TYPE_STTNG,
GOLFER_TYPE_NONE
}golfer_skin;
#define GOLFER_TYPE_TEXTURE_FILENAME ""
#define GOLFER_MALE_NAME "MALE\\"
#define GOLFER_FEMALE_NAME "FEMALE\\"
#define GOLFER_MAX_GENDERS 2
typedef enum golfer_gender
{
GOLFER_GENDER_MALE = 0,
GOLFER_GENDER_FEMALE = 1
}golfer_gender;
#define GOLFER_MALE_RF_REF ((uint32)(('R'<<24)|('_'<<16)|('f'<<8)|('o')))
#define GOLFER_MALE_LF_REF ((uint32)(('L'<<24)|('_'<<16)|('f'<<8)|('o')))
#define GOLFER_MALE_HAND_REF ((uint32)(('r'<<24)|('_'<<16)|('h'<<8)|('a')))
#define GOLFER_MALE_HAND_B_REF ((uint32)(('L'<<24)|('_'<<16)|('h'<<8)|('a')))
#define GOLFER_PUTT_REF ((uint32)(('P'<<24)|('U'<<16)|('T'<<8)|('T')))
#define GOLFER_WOOD_REF ((uint32)(('W'<<24)|('O'<<16)|('O'<<8)|('D')))
#define GOLFER_WEDG_REF ((uint32)(('W'<<24)|('E'<<16)|('D'<<8)|('G')))
#define GOLFER_FEMALE_RF_REF ((uint32)(('R'<<24)|('_'<<16)|('f'<<8)|('o')))
#define GOLFER_FEMALE_LF_REF ((uint32)(('L'<<24)|('_'<<16)|('f'<<8)|('o')))
#define GOLFER_FEMALE_HAND_REF ((uint32)(('L'<<24)|('_'<<16)|('f'<<8)|('o')))
#define GOLFER_FEMALE_HAND_B_REF ((uint32)(('R'<<24)|('_'<<16)|('f'<<8)|('o')))
#define GOLFER_FEMALE_CLUB_REF ((uint32)(('L'<<24)|('_'<<16)|('f'<<8)|('o')))
#define GOLFER_FPS 20
typedef enum golfer_anim_state
{
GOLFER_STOPED,
GOLFER_ANIMATING
}golfer_anim_state;
typedef enum golfer_anim_group
{
GOLFER_ANIM_GROUP_STANDARD=0,
GOLFER_ANIM_GROUP_WAIT_TEE,
GOLFER_ANIM_GROUP_WAIT_FAIRWAY,
GOLFER_ANIM_GROUP_WAIT_GREEN,
GOLFER_ANIM_GROUP_SHOT_NORMAL,
GOLFER_ANIM_GROUP_SHOT_FADE,
GOLFER_ANIM_GROUP_SHOT_DRAW,
GOLFER_ANIM_GROUP_SHOT_HOOK,
GOLFER_ANIM_GROUP_SHOT_SLICE,
GOLFER_ANIM_GROUP_SHOT_CHIP,
GOLFER_ANIM_GROUP_SHOT_CHIP_RUN,
GOLFER_ANIM_GROUP_SHOT_PITCH,
GOLFER_ANIM_GROUP_SHOT_PUNCH,
GOLFER_ANIM_GROUP_SHOT_PUTT_SOFT,
GOLFER_ANIM_GROUP_SHOT_PUTT_HARD,
GOLFER_ANIM_GROUP_SHOT_BUNKER,
GOLFER_ANIM_GROUP_SHOT_SLOPE_UP,
GOLFER_ANIM_GROUP_SHOT_SLOPE_DOWN,
GOLFER_ANIM_GROUP_SHOT_INCLINE_UP,
GOLFER_ANIM_GROUP_SHOT_INCLINE_DOWN,
GOLFER_ANIM_GROUP_AFTER_PUTT,
GOLFER_ANIM_GROUP_NONE
}golfer_anim_group;
typedef struct golfer_animations
{
world_model_list *Models;
world_animation_list *Standard;
world_animation_list *Extra;
}golfer_animations;
typedef enum golfer_state
{
GOLFER_STATE_None,
GOLFER_STATE_Animation
}golfer_state;
typedef struct golfer_player
{
golfer_gender Gender;
golfer_skin Type;
}golfer_player;
typedef struct golfer
{
uint32 Animation_Number;
golfer_anim_group Animation_Group;
uint32 Golfer;
golfer_state State;
world_animation_list *Animation_List;
world_animation *Animation;
uint32 Frame_Number;
uint32 Time;
}golfer;
screen_texture_list* Golfer_Load_Textures( golfer_skin Type, golfer_gender Gender);
void Golfer_Free_Textures( void);
int32 Golfer_Animating(void);
int32 Golfer_Get_Animation( void);
void Golfer_Set_Player( uint32 Player_Number, int32 Skin, int32 Colour);
void Golfer_Set_Position( int32 X, int32 Y, int32 Z, int32 Angle);
void Golfer_Set_Animation_Finish( void);
void Golfer_Set_Animation( int32 Animation);
void Golfer_Set_Extra_Animation( int32 Animations);
golfer_anim_state Golfer_Update(void);
void Golfer_Draw_Model(void);
golfer_anim_state Golfer_Draw(void);
void Golfer_Setup_Golfer_Data( uint32 Golfer);
void Golfer_Free_Anims( void);
void Golfer_Load_Anims( golfer_anim_group Type);
void Golfer_Initalise_Animations( register golfer_animations *Golfer_Anims, char *Filename);
int32 Golfer_Initalise( golfer_player *Golfer_Players, uint32 Number_Players);
void Golfer_Close(void);
void Golfer_Find_Anim_Hand_Vector( vector *Vector);
void Golfer_Find_Anim_Club_Vector( vector *Vector);
void Golfer_Find_Anim_Vector( vector *Vector);
trig_angle Golfer_Find_Anim_Angle( void);
void Golfer_Find_Shadow_Grad( void);
void Golfer_Shadow_Reset( void);
void Golfer_Test_Anim(void);
void Golfer_Tween_End( void);
void Golfer_Tween_Start( void);
golfer_anim_state Golfer_Tween( void);
# 9 "h/anim.h" 2
#define ANIM_TIME_WAIT 45000
#define ANIM_LENGTH_Walk 90
#define ANIM_LENGTH_Step_Long 38
#define ANIM_LENGTH_Step_Medium 29
#define ANIM_LENGTH_Step_Short 26
typedef enum anim_anim
{
ANIM_ANIM_Stand,
ANIM_ANIM_Wait,
ANIM_ANIM_Shot1,
ANIM_ANIM_Shot2,
ANIM_ANIM_Shot3,
ANIM_ANIM_Stance,
ANIM_ANIM_End,
ANIM_ANIM_None
}anim_anim;
typedef enum anim_section
{
ANIM_SECTION_Bunker,
ANIM_SECTION_Green,
ANIM_SECTION_Fairway,
ANIM_SECTION_Tee,
ANIM_SECTION_None
}anim_section;
typedef enum anim_action
{
ANIM_ACTION_None,
ANIM_ACTION_Stand,
ANIM_ACTION_Stance,
ANIM_ACTION_Shot,
ANIM_ACTION_Wait,
ANIM_ACTION_End
}anim_action;
typedef struct anim_action_data_stance
{
golfer_anim_group Group;
}anim_action_data_stance;
typedef enum anim_action_shot
{
ANIM_ACTION_SHOT_Start,
ANIM_ACTION_SHOT_Middle,
ANIM_ACTION_SHOT_End
}anim_action_shot;
typedef struct anim_action_data_shot
{
anim_action_shot Action;
golfer_anim_group Group;
uint32 Animation_Playing;
}anim_action_data_shot;
typedef enum anim_action_wait
{
ANIM_ACTION_WAIT_TEE,
}anim_action_wait;
typedef struct anim_action_data_wait
{
anim_action_wait Action;
uint8 Tee_In_Ground;
int16 Golfer_Pos_X;
int16 Golfer_Pos_Y;
int16 Golfer_Pos_Z;
int16 Golfer_Pos_Angle;
int32 Animation;
anim_action Action_Old;
SVECTOR Camera_Angle;
VECTOR Camera_Vector;
int32 Dist_From_Golfer;
int32 Height_Above_Ground;
char Movemode_Type;
int8 Arc_On;
}anim_action_data_wait;
typedef union anim_action_data
{
anim_action_data_shot Shot;
anim_action_data_stance Stance;
anim_action_data_wait Wait;
}anim_action_data;
typedef struct anim_data
{
anim_action_data Action_Data;
anim_section Section;
anim_action Action;
uint32 Time;
uint8 Selected_Golfer;
}anim_data;
void Anim_Init( void);
golfer_anim_state Anim_Update( pad_data Pad);
void Anim_Update_Position( int32 X, int32 Y, int32 Z, trig_angle Angle);
void Anim_Update_Stance( void);
golfer_anim_group Anim_Calc_Stance_Hill( void);
golfer_anim_group Anim_Calc_Stance_Group( void);
void Anim_Setup_End( void);
void Anim_Setup_Wait( void);
void Anim_Setup_Stance( void);
void Anim_Setup_Shot1( void);
void Anim_Setup_Shot2( void);
void Anim_Setup_Shot3( void);
void Anim_Set_Location( anim_section);
void Anim_Set_Animation( anim_anim Anim);
# 4 "h/game.h" 2
#define GAME_MAP_OFFSET_X ((int32)200)
#define GAME_MAP_OFFSET_Y ((int32)10)
#define GAME_MAP_SIZE_X ((int32)100)
#define GAME_MAP_SIZE_Y ((int32)100)
#define BALL_SIZE_X (4)
#define BALL_SIZE_Z (4)
void Game_Print_Map(void);
void Game_Walk_Hole(void);
void Game_Start(uint32 Course_Number, uint32 Hole_Number);
void Camera_Set_Angle( int32 X, int32 Y, int32 Z);
void Camera_Set_Position( int32 X, int32 Y, int32 Z);
void Ball_Draw(void);
void Ball_Set_Position( int32 X, int32 Y, int32 Z);
void Hole_Draw(void);
void Hole_Set_Position( int32 X, int32 Z);
uint32 Ball_Find_Highest(uint32 Start, uint32 End);
typedef enum game_shot_quality
{
GAME_SHOT_VERYGOOD,
GAME_SHOT_GOOD,
GAME_SHOT_AVERAGE,
GAME_SHOT_BAD,
GAME_SHOT_VERYBAD,
GAME_SHOT_SPECIAL
}game_shot_quality;
typedef struct game_shot_info
{
vector Start;
vector End;
int32 Start_Ground_Type;
int32 End_Ground_Type;
int32 Power;
}game_shot_info;
typedef enum partical_type
{
PARTICAL_TYPE_NONE,
PARTICAL_TYPE_WATER,
PARTICAL_TYPE_ROUGH,
PARTICAL_TYPE_TEE,
PARTICAL_TYPE_BUNKER_IN,
PARTICAL_TYPE_BUNKER_OUT
}partical_type;
typedef struct game_shot_partical
{
int32 Index;
int32 Type;
}game_shot_partical;
typedef struct game_shot
{
game_shot_info Shot_Aim;
game_shot_info Shot_Hit;
game_shot_quality Quality;
game_shot_quality Pos_Quality;
int32 Comm_File;
int32 Comm_Sound_Swing;
int32 Comm_Sound_Air;
int32 Comm_Sound_Land;
int32 Comm_Pos_File;
int32 Comm_Pos_Sound;
golfer_anim_group Anim_Group;
int32 Anim_Number;
int32 Anim_End_Number;
int32 Anim_Pot_Number;
int32 Power_Angle;
int32 Hit_Angle;
game_shot_partical Partical_Hit;
game_shot_partical Partical_Special;
int32 Ball_Hide_Index;
}game_shot;
void Game_Shot_Info_Save( game_shot_info *Info);
void Game_Shot_Calc_Quality( void);
# 25 "c\\golf1.c" 2
# 1 "h/credits.h" 1
#define __CREDITS_H
void ShowCredits(void);
void DrawShowCredits(int);
void DrawHeading(void);
# 26 "c\\golf1.c" 2
# 1 "h/map.h" 1
#define __GOLF_MAP_H
# 1 "h/psmdef.h" 1
#define __PSMDEF_H
typedef enum option_type
{
OPTION_TYPE_MAP = 0,
OPTION_TYPE_GRID_GREEN,
OPTION_TYPE_GRID_ZONE,
OPTION_TYPE_GIMMIES,
OPTION_TYPE_MULLIGANS,
OPTION_TYPE_CADDIE,
OPTION_TYPE_HANDICAP,
OPTION_TYPE_ARC_PRO,
OPTION_TYPE_ARC_ON,
OPTION_TYPE_SOUND,
OPTION_TYPE_COMMENTRY,
OPTION_TYPE_SAVE,
OPTION_TYPE_QUIT,
OPTION_TYPE_END
}option_type;
typedef enum shot_type
{
SHOT_Normal = 0,
SHOT_Chip,
SHOT_Run,
SHOT_ChipRun,
SHOT_Pitch,
SHOT_Punch
}shot_type;
#define MENU_COLOUR 80
#define MENU_SHADE 50
#define MENU_INDENT_X 5
#define MENU_INDENT_Y 15
#define MENU_SPACING_Y 14
#define MENU_GRAY 32
#define MENU_TICK 0
#define MENU_TICK_STRING "@"
#define MENU_ITEMS 12
#define MENU_SHADOW NOFONTSHADOW
#define DRY 0
#define DAMP 1
#define WET 2
#define CALM 0
#define BREEZY 1
#define WINDY 2
#define TIME_OUT 60*60
#define TESTING 0
#define CLASSIC_COURSES 0
#define MAG_DEMO 0
#define PUTTING_PRACTICE 0
#define NTC 0
#define THE_DEMO 0
#define POLL_HOST pollhost();
#define FROM_CD 0
#define PAL_VERSION 1
#define BALL_LOGIC_RATE 50
#define DEBUG_ONLY 0
#define NO_TREE_COLLISION 0
#define EASY_GAME 0
#define SHOW_LAND_AT_ARC_END 0
#define SHOW_TREE_HIT_IN_ARC 1
#define DO_A_DEMO 0
#define NO_OF_HOLES 18
#define FULLMENU 0
#define SMALLMENU 0
#define MAP_EDIT 0
#define UPDATE_GOLFER_POS 1
#define PERFECT_SHOT 0
#define SAVE_SCREEN_PIC 0
#define AUTO_CAM 1
#define GOLFER_3D 1
#define NO_TREES 0
#define TREEOPTFIX 1
#define GEOM_OFFSET_X 160
#define GEOM_OFFSET_Y 70
#define GOLF_EXIT 0
#define GO 0
#define JUNE_DEMO 0
#define NOBUFF 0
#define COMP_PLYS 0
#define STAT_ERROR 1
#define RNDGEN 50
#define PSX_TOT_PLAY 88
#define PLAY_MAX 4
#define MAX_COURSES 30
#define NEW_COURSES 0
#define LEADER_BOARD 64
#define PSX_CLUBS 19
#define PSX_BAG 16
#define PSX_STATS 22
#define PSX_TOT_STATS 32
#define FUNDS 64
#define PERCS 16
#define MPLAY_MAX 16
#define AMM_MALE 0
#define AMM_FEMALE 1
#define PRO_MALE 2
#define PRO_FEMALE 3
#define PRACTICE 0
#define STROKEPLAY 1
#define MATCHPLAY 2
#define SKINS
#define FOURBALL 4
#define FOURSOME 5
#define AMM_TOUR 6
#define PRO_TOUR 7
#define PRACTICE_PLAYER 0
#define UP 0
#define DOWN 1
#define LEFT 2
#define RIGHT 3
#define ZERO 0
#define STRDOWN 1
#define STRUP 2
#define SHRDOWN 3
#define SHRUP 4
#define STRLEFT 1
#define STRRIGHT 2
#define SHRLEFT 3
#define SHRRIGHT 4
#define CADDY 1
#define NO_CADDY 0
#define CLUB_D1 0
#define CLUB_2W 1
#define CLUB_3W 2
#define CLUB_4W 3
#define CLUB_5W 4
#define CLUB_6W 5
#define CLUB_1I 6
#define CLUB_2I 7
#define CLUB_3I 8
#define CLUB_4I 9
#define CLUB_5I 10
#define CLUB_6I 11
#define CLUB_7I 12
#define CLUB_8I 13
#define CLUB_9I 14
#define CLUB_SW 15
#define CLUB_PW 16
#define CLUB_LW 17
#define CLUB_PT 18
#define SHOT_STRAIGHT 0
#define SHOT_FADE 1
#define SHOT_DRAW 2
#define LEAVE 0
#define HIT_BALL 1
#define MOVE_MODE 0
#define PLAY_MODE 1
#define ICON_MODE 2
#define PUTT_MODE 3
#define USE_SUBGRID 0
#define AWORD 2
#define ALONG 4
#define SCR_Z (512)
#define OTSIZE (1)
#define SCR_START_X 0
#define SCR_START_Y 0
#define SCR_WID 320
#define SCR_HGT 256
#define SUB_GRID_COUNT 192
#define SUB_GRID_SIZE 4
#define MAX_TREE_PRIMS 1
#define MAX_TREE_SHAD_PRIMS 1
#define POLY_YARDS 10
#define POLY_SIZE 440
#define YARD POLY_SIZE/10
#define GWID 1
#define TOTAL_GWID GWID*GWID
#define DIST_FROM_BALL POLY_SIZE*3
#define DEPTH150 (POLY_SIZE*2/4)
#define DEPTH300 (POLY_SIZE*4/4)
#define DEPTH600 (POLY_SIZE*8/4)
#define USE_HGTS 1
#define VRAM_TEMPICONX 832
#define VRAM_TEMPICONY 256
#define DRAWSCR 1
#define DISPSCR 0
#define NO_OF_LAND_TEXTURES 96
#define VRAMLAND1X 320
#define VRAMLAND1Y 0
#define VRAMLAND2X 320+64
#define VRAMLAND2Y 0
#define VRAMLAND3X 320
#define VRAMLAND3Y 256
#define VRAMLAND4X 320+64
#define VRAMLAND4Y 256
#define VRAMLAND5X 448
#define VRAMLAND5Y 0
#define VRAMLAND6X 448+64
#define VRAMLAND6Y 0
#define VRAMBACKX 576
#define VRAMBACKY 0
#define BACKW 256
#define BACKH 100
#define VRAMTREEM1X 448
#define VRAMTREEM1Y 256
#define VRAMTREEM2X 704
#define VRAMTREEM2Y 0
#define VRAMTREESX 704
#define VRAMTREESY 256
#define VRAMTREETX 704
#define VRAMTREETY 256
#define VRAM_HOLEMAP_X 832
#define VRAM_HOLEMAP_Y 256
#define sub_grid_used 0x8001a408
#define sub_grid_map 0x8001a508
#define sub_grid_vecs 0x80022508
#define sub_grid_text_types 0x8002a508
#define BACK_GR_START 5
#define COSINE SINE+256
#define TREE_GR_START 9
#define SUBTEXT_GR_START 29
#define NEWLAND_GR_START 0
#define VRAM_TEMP_X 704
#define VRAM_TEMP_Y 480
#define VRAM_STAT_GOLFER_Y 100
#define VRAM_ICON_X 576
#define VRAM_ICON_Y 256
#define xzfix 2
#define CHARSET1 0
#define CHARSET2 1
#define CHARSET3 2
#define CHARSET4 3
#define NOFONTSHADE 0
#define FONTSHADE1 1
#define FONTSHADE2 2
#define FONTSHADE3 3
#define FONTSHADE4 4
#define FONTSHADE5 5
#define FONTSHADE6 6
#define FONTSHADE7 7
#define FONTSHADE8 8
#define FONTSHADE9 9
#define FONTSHADE10 10
#define FONTSHADE11 11
#define FONTSHADE12 12
#define FONTSHADE13 13
#define FONTSHADE14 14
#define FONT_COLOUR_NONE 0
#define FONT_COLOUR_BLACK 1
#define FONT_COLOUR_WHITE 2
#define FONT_COLOUR_RED 3
#define FONT_COLOUR_GREEN 4
#define FONT_COLOUR_BLUE 5
#define FONT_COLOUR_RGB 6
#define FONT_COLOUR_LIGHT_GREY 7
#define FONT_COLOUR_GREY 8
#define FONT_COLOUR_GRAD_RED 9
#define FONT_COLOUR_LIGHT_RED 10
#define FONT_COLOUR_LIGHT_BLUE 11
#define FONT_COLOUR_YELLOW 12
#define FONT_COLOUR_PALE 13
#define FONT_COLOUR_ORANGE 14
#define FONT_COLOUR_Orange 15
#define FONTFULL 0
#define FONTHALF 1
#define NOFONTSHADOW 0
#define FONTSHADOW 1
#define NOTRANS 0
#define TRANS1 1
#define TRANS2 2
#define TRANS3 3
#define TRANS4 4
#define BORDER1 0
#define BORDER2 1
#define BORDER3 2
#define BORDER4 4
#define NOBORDER 3
#define SHAD 1
#define NOSHAD 0
#define HIT_AREA_OK 1024
#define HIT_AREA_R 0
#define ERROR_R 475
#define SHOWPOWER 1
#define NOSHOWPOWER 0
#define ON_TEE 0
#define ROUGH 1
#define FAIR 2
#define GREEN 3
#define BUNK 4
#define WATER 5
#define ROAD 6
#define HROUGH 7
#define ICON_ARROW_UP 20
#define ICON_ARROW_DOWN 21
#define LAND_ICON_START 1
#define BALL_ICON 7
#define HOLE_ICON 9
#define MENU_ICON0 10
#define MENU_ICON1 12
#define MENU_ICON2 15
#define MENU_ICON3 17
#define MENU_ICONL 13
#define MENU_ICONR 14
#define MENU_ICONT 11
#define MENU_ICONB 16
#define BALL_ICON_MFLI 18
#define MOVEMODE_LO_Y 200
#define MOVEMODE_HI_Y 1000
#define MOVEMODE_MIN_DIST POLY_SIZE/2
#define MOVEMODE_MAX_DIST POLY_SIZE*4
#define MOVEMODE_Y_INC ((MOVEMODE_HI_Y - MOVEMODE_LO_Y)/200)
#define MOVEMODE_Y_DEC (-MOVEMODE_Y_INC)
#define MOVEMODE_MIN_ANG_X 0
#define MOVEMODE_MAX_ANG_X 0x400
#define MOVEMODE_TIME_DEFAULT 20
#define MOVEMODE_TIME_ACC 3000
#define MOVEMODE_TIME_ANG_Y( TIME) (((TIME)*0x1000) / 11000)
#define MOVEMODE_TIME_DFG_F( TIME) (((TIME)*(440*64)) / 25000)
#define MOVEMODE_TIME_Y( TIME) (((TIME)*(MOVEMODE_HI_Y - MOVEMODE_LO_Y)) / (7000))
#define MOVEMODE_TIME_DFG( TIME) (((TIME)*(MOVEMODE_MAX_DIST-MOVEMODE_MIN_DIST)) / (7000))
#define ARC_TIME_DIST( TIME) (((TIME) * (100))/7000)
#define ARC_TIME_ROT( TIME) (((TIME) * (0x1000))/20000)
#define MOVEMODE_ANG_Y_INC (0x1000 / 200)
#define MOVEMODE_ANG_Y_DEC (-MOVEMODE_ANG_Y_INC)
#define MOVEMODE_DFG_F_INC ((MOVEMODE_MAX_DIST - MOVEMODE_MIN_DIST)/100)
#define MOVEMODE_DFG_F_DEC (-MOVEMODE_DFG_F_INC)
#define MOVEMODE_DFG_P_INC ((MOVEMODE_MAX_DIST - MOVEMODE_MIN_DIST)/4000)
#define MOVEMODE_DFG_P_DEC (-MOVEMODE_DFG_P_INC)
#define MOVEMODE_ANG_X_INC ((MOVEMODE_MAX_ANG_X - MOVEMODE_MIN_ANG_X)/4000)
#define MOVEMODE_ANG_X_DEC (-MOVEMODE_ANG_X_INC)
#define MOVEMODE_CALC_ANG_X( HIGH) ((((MOVEMODE_MAX_ANG_X - MOVEMODE_MIN_ANG_X)*((HIGH)-MOVEMODE_LO_Y))/(MOVEMODE_HI_Y-MOVEMODE_LO_Y))+MOVEMODE_MIN_ANG_X)
#define CAM_BALL_NO 12
#define CAM_REPLAY_NO 15
#define CAM_OOB_NO 1
#define CAM_BALL 0
#define CAM_REPLAY (CAM_BALL + CAM_BALL_NO)
#define CAM_OOB (CAM_REPLAY + CAM_REPLAY_NO)
# 518 "h/psmdef.h"
typedef enum camera_type
{
CAM_QD_F,
CAM_QD_FH,
CAM_QD_R,
CAM_QD_RH,
CAM_QD_V,
CAM_MV_BB,
CAM_MV_IB,
CAM_MV_PAN,
CAM_MV_SB,
CAM_QD_EYE,
CAM_QD_INTD,
CAM_QD_INTS,
CAM_MV_BB2,
CAM_MV_IB2,
CAM_MV_BB3,
CAM_MV_IB3,
CAM_QD_SIDE,
CAM_MV_PAN_BALL,
CAM_MV_PAN_AIR,
CAM_MV_PAN_EYE,
CAM_INTELLIGENT
}camera_type;
#define CAMPOS_FULL 0
#define CAMPOS_L 1
#define CAMPOS_R 2
#define CAMPOS_TL 3
#define CAMPOS_TR 4
#define CAMPOS_BL 5
#define CAMPOS_BR 6
#define CAMPOS_TH 7
#define CAMPOS_BH 8
#define CAM_START 0xfe
#define CAM_STOP 0x81
#define CAM_DONE 0xff
#define CAM_FIRST 0
#define CAM_LAST 1
#define SAMPLE_VOLUME 12000
#define MAX_WIND_VOLUME 12000
#define MAX_WATER_VOLUME 8000
#define MAX_BIRD_VOLUME 9000
#define SAMPLE_WIND_CHAN1 20
#define SAMPLE_WIND_CHAN2 21
#define SAMPLE_WIND_CHAN3 22
#define SAMPLE_SEA_CHAN 23
#define SAMPLE_INHOLE 0
#define SAMPLE_SWING 1
#define SAMPLE_SWINGI 2
#define SAMPLE_SWINGB 3
#define SAMPLE_PUTT1 4
#define SAMPLE_PUTT2 5
#define SAMPLE_PUTT3 6
#define SAMPLE_SWINGR 7
#define SAMPLE_SWINGHR 8
#define SAMPLE_WATERL 9
#define SAMPLE_WATERS 10
#define SAMPLE_FLAGHIT 11
#define SAMPLE_TREEHIT 12
#define SAMPLE_BOUNCES 13
#define SAMPLE_BOUNCE 14
#define SAMPLE_BOUNCER 15
#define SAMPLE_OOH 16
#define SAMPLE_CLAP 17
#define SAMPLE_GOOD 18
#define SAMPLE_VGOOD 19
#define SAMPLE_CHAMP 20
#define SAMPLE_WIND 21
#define SAMPLE_SEA 22
#define SAMPLE_BIRD 23
#define SAMPLE_BIRD2 24
#define SAMPLE_BIRD3 25
#define SAMPLE_BIRD4 26
#define USE_SAMPLE_SFX 1
#define USE_SAMPLE_BIRDS 2
#define USE_SAMPLE_WINDWAT 4
#define USE_SAMPLE_CROWDS 8
#define DIST_YARD (44)
#define DIST_FOOT (14)
#define DIST_INCH (1)
#define DIST_DIST_TO_INCH( COORD) ( ((COORD)*(12*3)) >>8)
#define DIST_DIST_TO_FEET( COORD) ( ((COORD)*3) >>8)
#define DIST_DIST_TO_YRDS( COORD) ( ((COORD)) >>8)
#define DIST_COORD_TO_DIST( COORD) ( ((COORD)*(10<<8))/440)
#define DIST_COORD_TO_YRDS( COORD) ( DIST_DIST_TO_YRDS( DIST_COORD_TO_DIST( COORD)))
#define VALFILENM "ACTUAGOLFVL"
# 8 "h/map.h" 2
# 1 "h/psmstruc.h" 1
#define __PSMSTRUCT_H
typedef struct
{
short crowd ,
commentary,
master,
coursefx,
music,
audio;
} sound_option;
typedef enum game_options_commentry
{
OPTION_COMMENTRY_ENG1=0,
OPTION_COMMENTRY_ENG2=1,
OPTION_COMMENTRY_USA=2,
OPTION_COMMENTRY_MIX1=3,
OPTION_COMMENTRY_MIX2=4,
OPTION_COMMENTRY_MIX3=5,
OPTION_COMMENTRY_MIX4=6,
OPTION_COMMENTRY_FRENCH=7,
OPTION_COMMENTRY_GERMAN=8,
OPTION_COMMENTRY_JAPANESS=9
}game_options_commentry;
typedef struct
{
short gimmies ,
mulligans,
arc,
grid,
hole_map,
language,
commentator,
PartnerType;
} game_option;
typedef struct
{
char comment[11];
short no;
} game_save_info;
typedef struct
{
short weather,
wind;
} weather_option;
typedef struct
{
uint16 HitBall,
ClubSelect,
BallCam,
Cancel;
} joypad_setup;
typedef enum movemode_mode
{
MOVEMODE_TYPE_BehindGolfer = 0,
MOVEMODE_TYPE_Eye,
MOVEMODE_TYPE_AerialPan,
MOVEMODE_TYPE_Fairway,
MOVEMODE_TYPE_Green,
MOVEMODE_TYPE_GreenLeft,
MOVEMODE_TYPE_GreenRight,
MOVEMODE_TYPE_GreenHigh,
MOVEMODE_TYPE_GreenHighLeft,
MOVEMODE_TYPE_GreenHighRight,
MOVEMODE_TYPE_GreenAerial,
MOVEMODE_TYPE_BehindPin,
MOVEMODE_TYPE_BehindGolfer_Green,
MOVEMODE_TYPE_Free
}movemode_mode;
typedef struct
{
int32 money;
int32 money_two;
char name[17];
int8 level;
int16 stats[22 ];
int8 clubs[19 ];
int8 ranking;
int8 skill;
int8 handycap;
int8 card[18];
int8 Won_Last:4;
int8 tour:4;
uint8 male:2;
uint8 skin_type:2;
uint8 clothes:4;
}play_player;
typedef struct {
int8 golfer;
int8 hole;
int16 score;
} play_board ;
typedef struct {
short zero;
short one;
short two;
short three;
short four;
short five;
short six;
short seven;
} move_grafic ;
typedef struct {
int16 current_score;
int16 prev_point;
int16 pos_x;
int16 pos_z;
int32 distance_to_hole;
int32 distance_last_shot;
int32 money_won;
int8 player_no;
int8 current_club;
int8 shots_taken;
uint8 camera_type:4;
uint8 track_shot_type:4;
uint8 hole_fin:1;
uint8 grid_on:2;
uint8 human:1;
} player_data;
typedef struct {
long ball_start_x, ball_start_y, ball_start_z;
long ball_end_x,ball_end_z;
long ball_yangle;
long loft_angle;
long winddir;
long xwind;
signed char club_selected;
long strikeangle;
short usedirec;
char fadedraw;
long velp;
short bally;
} REPLAY_DATA;
typedef struct {
short x;
short y;
} RTP_COORDS;
typedef struct {
char tm[8];
char val0,val1;
} TEXTMASK;
typedef struct {
u_short vx;
u_short vz;
} FAIRWAY_POINTS;
typedef struct {
short x,y,w,h;
long posx,posy,posz;
long angx,angy;
long iposx,iposy,iposz;
long iangx,iangy;
long ihag;
short hag;
char type;
char full;
char moving;
char sypos;
char *cam_ptr;
char *cam_next_ptr;
short next_cam;
char cam_updated;
char enlarge;
char rotate_y;
short tree_block_otz;
} CAMERA_DATA;
typedef struct {
short x,y,w,h;
} SCREEN_POS;
typedef struct {
short bx,by,bw,bw2;
short bsx,bsy;
} BALL_SCREEN_POS;
typedef struct {
short vx;
short vy;
short vz;
} BALL_DAT;
typedef struct
{
VECTOR lvec;
long level;
VECTOR ang;
} DARKNESS;
typedef struct
{
u_char tree_type;
char xoff,zoff;
} TREEDAT;
typedef struct
{
POLY_F4 fp;
DR_MODE fpdm;
u_short depth;
} TRANSPOLY;
typedef struct
{
SVECTOR coord;
short topy;
u_short tree_type;
u_char do_shad;
} NEWTREEDAT;
typedef struct
{
short w;
short h;
} TREEWH;
typedef struct
{
SVECTOR vecs[ (4 +1) * (4 +1) ];
} SG_VECS;
typedef struct
{
POLY_GT4 prims[ 4 * 4 ];
} SG_PRIMS;
typedef struct {
SVECTOR golfer_at_ball_pos;
short ball short golfer_angle;
short disp_screen_start_x,disp_screen_start_y;
short draw_screen_start_x,draw_screen_start_y;
} DB;
typedef struct
{
long addr;
} TEMP_ICONH;
typedef struct
{
u_short tpage;
u_short corner0x,corner0y;
u_short corner1x,corner1y;
u_short corner2x,corner2y;
u_short corner3x,corner3y;
} GRH;
typedef struct
{
u_short clut_id;
u_short tpage;
u_short corner0x,corner0y;
u_short corner1x,corner1y;
u_short corner2x,corner2y;
u_short corner3x,corner3y;
} GRH2;
typedef struct
{
u_char x,y;
u_char w,h;
} SPRH;
typedef struct
{
short vx;
short vz;
} HPOS;
typedef union
{
char c;
long l;
short s;
} BYTES;
typedef struct
{
char level;
int8 ranking;
int8 skill;
int8 handycap;
short stats[22 ];
int8 card[18];
int8 tour;
long money;
long money_two;
}cpu_player;
typedef struct
{
cpu_player Save_cpu_player[88 -4];
play_player Save_psx_player[4];
} game_data;
typedef struct
{
play_player Save_psx_player;
uint8 no_amm_rounds:4;
uint8 no_pro_rounds:4;
} save_player_data;
# 9 "h/map.h" 2
#define MAP_SIZE_X 28160
#define MAP_SIZE_Y 28160
#define MAP_DEPTH_OFFSET ((uint32)0xb00)
#define MAP_COORD_TO_INDEX_X( COORD) ((COORD)/440)
#define MAP_COORD_TO_INDEX_Y( COORD) ((COORD)/440)
#define MAP_INDEX_TO_COORD_X( INDEX) ((INDEX)*440)
#define MAP_INDEX_TO_COORD_Y( INDEX) ((INDEX)*440)
#define MAP_LOCATION_TYPE 0x7
#define MAP_LOCATION_TYPE_Road 1
#define MAP_LOCATION_TYPE_Bunker 2
#define MAP_LOCATION_TYPE_Rough 3
#define MAP_LOCATION_TYPE_Fairway 4
#define MAP_LOCATION_TYPE_Green 5
#define MAP_LOCATION_TYPE_Water 6
#define MAP_LOCATION_TYPE_OutOfBounds 7
#define MAP_MIRROR 0x80
#define MAP_FLIP 0x40
#define TREE_TYPE_TREE 0
#define TREE_TYPE_BUSH 1
#define TREE_TYPE_ROCK 2
typedef struct map_polygon
{
int16 Control;
uint16 Link;
uint16 Mode;
uint16 Bank;
uint16 Character;
uint16 Size;
uint16 IndexTL;
uint16 IndexTR;
uint16 IndexBR;
uint16 IndexBL;
uint16 GouraudTL;
uint16 GouraudTR;
uint16 GouraudBR;
uint16 GouraudBL;
}map_polygon;
typedef struct map_polygon_list
{
uint32 Number_Polygons;
map_polygon *Polygons;
}map_polygon_list;
typedef struct map_object
{
struct map_object *Next;
map_polygon_list *Polygon_List;
world_vector_list *Vector_List;
screen_texture_list *Texture_List;
matrix Matrix;
matrix New_Matrix;
}map_object;
typedef struct map_location
{
uint8 Type;
uint8 Water_Volume;
int16 Height;
int16 Tree_Index;
int8 Tree_Number;
int8 Texture;
}map_location;
typedef struct map_tree
{
int16 Loc_X;
int16 Loc_Y;
uint8 Flag;
uint8 Type;
int16 Height;
}map_tree;
typedef struct map_hole
{
int32 Loc_X;
int32 Loc_Y;
}map_hole;
typedef struct golf_map
{
uint16 Size_X;
uint16 Size_Y;
uint16 Grid_X;
uint16 Grid_Y;
uint16 Tee_Loc_X;
uint16 Tee_Loc_Z;
uint16 Number_Trees;
uint16 Number_Holes;
uint16 Wind_Angle;
uint16 Wind_Speed;
map_location *Map_Locations;
map_tree *Trees;
map_hole *Holes;
uint16 *Demo;
int32 Offset_X;
int32 Offset_Y;
trig_fixed Scale_X;
trig_fixed Scale_Y;
trig_angle Angle;
uint16 Fairway_Points[20][2];
}golf_map;
void Map_Tree_Golfer_Obscure( void);
void Map_Make_Camera_Matrix(void);
void Map_Init_Polygons( map_object *Object);
void Map_Light_Polygons( map_object *Object);
void Map_Draw_Ground_Poly(screen_texture *Texture, world_vector *VectorTL, world_vector *VectorTR, world_vector *VectorBR, world_vector *VectorBL, vdp1_gouraud_table *Gouraud);
void Map_Draw_Ground_Mark(world_vector *VectorTL, world_vector *VectorTR, world_vector *VectorBR, world_vector *VectorBL, uint16 Colour);
void Map_Add_To_World_Sub_Divided( map_polygon *Polygon, screen_texture *Texture, world_vector *VectorTL, world_vector *VectorTR, world_vector *VectorBR, world_vector *VectorBL, uint16 GouraudTL, uint16 GouraudTR, uint16 GouraudBR, uint16 GouraudBL);
void Map_Add_To_World(map_object *Object, map_polygon_list *Polygon_List, world_vector *Vectors, world_vector_list *Vector_List);
inline void Map_Add(map_object *Object, matrix *Matrix);
void Map_Draw_Map( void);
void Map_Draw_Trees( void);
void Map_Draw(void);
void Map_Draw_Ball_Path(BALL_DAT *Ball, uint32 Number_Points, uint16 Colour);
void Map_Grid_Draw( int32 Rotate);
void Map_Grid_Draw_Grid( void);
void Map_Grid_Calc_Points( int32 Rotate);
int32 Map_Get_Height(int32 X, int32 Y);
int32 Map_Get_Safe_Height(int32 X, int32 Y);
map_location* Map_Get_Location(int32 X, int32 Y);
void Map_Load_Textures( void);
void Map_Load_Trees( void);
void Map_Load( uint32 Course_Number, uint32 Hole_Number);
void Map_Free_Textures( void);
void Map_Free_Trees( void);
void Map_Free(void);
void Map_Copy_VSync_Data( screen_data *Buffer);
void Map_Setup_VDP2(void);
# 182 "h/map.h"
#define MAP_EXTERN extern
extern screen_texture_list *Course_Texture_List;
extern screen_texture_list *Course_Texture_List_8x8;
extern screen_texture_list *Course_Tree_Texture_List;
extern golf_map *Course_Map;
extern map_object *Course_Map_Object;
extern world_object *Course_Tree_Object;
extern void *Course_Ground_Detect;
extern trig_angle Camera_Angle_X;
extern trig_angle Camera_Angle_Y;
extern trig_angle Camera_Angle_Z;
extern int32 Camera_X;
extern int32 Camera_Y;
extern int32 Camera_Z;
extern matrix Camera_Matrix;
# 28 "c\\golf1.c" 2
# 1 "h/sfx.h" 1
#define __SFX_H
#define SFX_MEMORY_TYPE memory_raml
#define SFX_PCM_FILENAME "GAME2"
#define SFX_MENU_FILENAME "menu"
#define SFX_COMM_FILENAME "comm"
#define SFX_COMM_LIST 3
#define SFX_COMM_RND( FIRST, LAST) static sfx_comm_sound Comm_List[ (LAST)-(FIRST)] = {-1}; int32 Rnd = Sfx_Comm_Rnd_Sound( (FIRST), (LAST), Comm_List);
#define SFX_COMMENTRY_PAGES 10
#define SFX_COMMENTRY_PAGE_SIZE 2048
#define SFX_COMMENTRY_LENGTH ( SFX_COMMENTRY_PAGES * SFX_COMMENTRY_PAGE_SIZE)
#define SFX_COMMENTRY_RATE 11025
#define SFX_COMMENTRY_BYTES 1
#define SFX_FREND_SOUND_CLICK_A 8
#define SFX_FREND_SOUND_CLICK_B 9
#define SFX_BIRD_HIGH 6
#define SFX_BIRD_LOW 0
#define SFX_BIRD_NUMBER (SFX_BIRD_HIGH - SFX_BIRD_LOW)
#define SFX_WATER_WAIT 10000
#define SFX_WAIT_TIME 80000
#define SFX_BIRD_WAIT 11000
#define SFX_MENU_BUTTON_Up 14
#define SFX_MENU_BUTTON_Down 14
#define SFX_MENU_BUTTON_Fire 15
#define SFX_MENU_SELECT1A 1
#define SFX_MENU_SELECT1B 1
#define SFX_MENU_SELECT2 5
#define SFX_MENU_SELECT3 6
#define SFX_WATER_WAVE 29
#define SFX_WATER_STREAM 30
#define SFX_SHOT_CLUB_GOOD 8
#define SFX_SHOT_CLUB_BAD 7
#define SFX_SHOT_PUTT_GOOD 10
#define SFX_SHOT_PUTT_BAD 7
#define SFX_SHOT_PUTTER 10
#define SFX_SHOT_DRIVER 7
#define SFX_SHOT_IRON 7
#define SFX_SHOT_SAND 11
#define SFX_CROWD_MUR1 23
#define SFX_CROWD_MUR2 24
#define SFX_CROWD_OHH 25
#define SFX_CROWD_OOH 26
#define SFX_CROWD_TEE1 27
#define SFX_CROWD_TEE2 28
#define SFX_LAND_BOUNCE 13
#define SFX_LAND_BOUNCE1 12
#define SFX_LAND_BOUNCE2 13
#define SFX_LAND_BOUNCE3 14
#define SFX_LAND_FLAG 15
#define SFX_LAND_LANDBALL 14
#define SFX_LAND_PLOP1 17
#define SFX_LAND_PLOP2 18
#define SFX_LAND_TARMAC 19
#define SFX_LAND_BUSH 21
#define SFX_LAND_TREE 20
#define SFX_LAND_HOLE 22
#define SFX_COMM_BUFFER_SIZE 4
typedef enum sfx_comm_lang
{
SFX_COMM_LANG_USA=0,
SFX_COMM_LANG_FRENCH=1,
SFX_COMM_LANG_GERMAN=2,
SFX_COMM_LANG_ENG1=3,
SFX_COMM_LANG_ENG2=4,
SFX_COMM_LANG_JAP=5
}sfx_comm_lang;
typedef enum sfx_comm_file
{
SFX_COMM_FILE_ADD=0,
SFX_COMM_FILE_BLO,
SFX_COMM_FILE_COU,
SFX_COMM_FILE_DRY,
SFX_COMM_FILE_FIN,
SFX_COMM_FILE_FOB,
SFX_COMM_FILE_FOS,
SFX_COMM_FILE_INT,
SFX_COMM_FILE_LAY,
SFX_COMM_FILE_LED,
SFX_COMM_FILE_MAT,
SFX_COMM_FILE_NOR,
SFX_COMM_FILE_POR,
SFX_COMM_FILE_MIS,
SFX_COMM_FILE_NAM,
SFX_COMM_FILE_NAMA,
SFX_COMM_FILE_QUA,
SFX_COMM_FILE_QUB,
SFX_COMM_FILE_QUR,
SFX_COMM_FILE_QUT,
SFX_COMM_FILE_SCO,
SFX_COMM_FILE_SKI,
SFX_COMM_FILE_TEE,
SFX_COMM_FILE_TYP,
SFX_COMM_FILE_USA,
SFX_COMM_FILE_WAT,
SFX_COMM_FILE_WET,
SFX_COMM_FILE_WAS,
SFX_COMM_FILE_WAG,
SFX_COMM_FILE_YES,
SFX_COMM_FILE_USAX,
SFX_COMM_FILE_SCOX,
SFX_COMM_FILE_POT
}sfx_comm_file;
typedef uint8 sfx_comm_sound;
typedef struct sfx_comm_buffer
{
sfx_comm_file File;
int32 Sound;
}sfx_comm_buffer;
typedef struct sfx_list_item
{
int32 Sound;
int32 Index;
sound_volume Volume;
sound_pan Pan;
}sfx_list_item;
#define SFX_PLAY_LIST_LENGTH 20
typedef struct sfx_list_data
{
sfx_list_item Play_List[
sfx_list_item *Present;
sfx_list_item *Last;
}sfx_list_data;
typedef struct sfx_data
{
sound_pcm_list *Sound_List;
sound_pcm_buffer *Buffer_Stream;
sound_pcm_buffer *Buffer_Sea;
sound_comm_data *Comm;
sfx_comm_lang Comm_Lang;
sfx_comm_file Comm_File;
sfx_list_data Play_List;
int8 Birds;
}sfx_data;
sound_comm_status Sfx_Comm_Status( void);
int32 Sfx_Comm_Size( int32 Sound);
int32 Sfx_Comm_Rnd_Sound(int32 First, int32 Last, sfx_comm_sound *Old);
void Sfx_Comm_Play_Name( int32 Player);
void Sfx_Comm_Commentator( void);
void Sfx_Comm_Lang( sfx_comm_lang Lang);
void Sfx_Comm_File( sfx_comm_file File);
m_Stop( void);
void Sfx_Comm_Play( int32 Sound);
void Sfx_Comm_File_Close( void);
void Sfx_Course_List_Clear( void);
void Sfx_Course_List_Add( int32 Sample, int32 Index, sound_volume Volume, an Pan);
void Sfx_Course_List_Play( int32 Index);
void Sfx_Course_Wait( pad_data Pad);
void Sfx_Course_Play( int32 Sample, sound_volume Volume, sound_pan Pan);
void Sfx_Course_Background( void);
void Sfx_Menu_Play( int32 Sample);
void Sfx_Menu_Pad( pad_data Pad);
void Sfx_Menu_Init( void);
void Sfx_Menu_Free( void);
int32 Sfx_Init( void);
void Sfx_Close( void);
void Sfx_Frend_Pad( pad_data Pad);
void Sfx_Frend_Play_Sound(int8 Sound);
#define SFX_SLIDE_TO_VOLUME( SLIDE) (((SLIDE)* SOUND_VOLUME_MAX)/120)
# 29 "c\\golf1.c" 2
# 1 "h/frend.h" 1
#define __FREND_H
#define JDEBUG 1
#define SOUND_ON 1
#define SOUND_OFF 0
#define OPT_ON 1
#define OPT_OFF 0
#define PRO_ARC 0
#define AMM_ARC 1
#define NO_ARC 2
#define TEXT 1
#define SPRITE 0
#define MAX_VOLUME 102
#define NO_PLAYER 97
#define CPUPLAYER 98
#define MOVE_UP 0
#define MOVE_DOWN 1
enum
{
POLYLINE,
POLYGON,
TRANSPOL
};
enum
{
ENGLISH_TEXT,
FRENCH_TEXT,
GERMAN_TEXT,
JAPANESE_TEXT
};
enum
{
NORMAL,
HIDE,
REVEAL,
DISABLE
};
enum
{
HITBALL =21,
CLUBSELECT,
CAM,
CANCELSHOT
};
void show_start_menu(short selected, short, short);
void psx_start_menu(void);
void psx_name_editor(short);
void select_partner_oponent(short, short, short);
void draw_select_partopp(short selected, short pressed, short start, short playernum, short ticked, uint8 CurrPlayer, uint8 shownum);
void list_players(short start, short finish, short ticked);
void draw_options_screen(short, short, char newname[16], short, short, short lastlvalue, uint8 numplayers, uint8 HideReveal);
void gametype_options(void);
void sound_options(void);
void draw_sound_options(short selected, short pressed);
void draw_slide(short selected, uint16 , uint16, short , short);
void draw_actua(short);
void draw_spin_buttons(short, short, short, int *, int );
void draw_small_spin_buttons(short, short, short,
(Source: Original TCRF research)
Regional Differences#
Title Screen#
Europe |
US |
Japan |
|---|---|---|
|
The Actua Sports series | |
|---|---|
|
PlayStation |
|
|
Sega Saturn |
|