diff options
| author | XaviDCR92 <xavi.dcr@gmail.com> | 2017-09-23 01:32:26 +0200 |
|---|---|---|
| committer | XaviDCR92 <xavi.dcr@gmail.com> | 2017-09-23 01:32:26 +0200 |
| commit | e6d41c59ffa15dee7f8bc9d7ea0e12ac682da595 (patch) | |
| tree | 19a1b57479a66efe6f74c2eedfd4795554fa75b7 /Source | |
| parent | 286d13d71d017003df4cb44fc4ef4822d9e39c03 (diff) | |
| download | airport-e6d41c59ffa15dee7f8bc9d7ea0e12ac682da595.tar.gz | |
Bugfix: ptrPlayer->SelectedAircraft was being substracted when == 0 and caused a game crash. Bugfix: aircraft did not stop when DIR_SOUTH.
Diffstat (limited to 'Source')
| -rw-r--r-- | Source/Aircraft.c | 13 | ||||
| -rwxr-xr-x | Source/Exe/AIRPORT.elf | bin | 326468 -> 326864 bytes | |||
| -rw-r--r-- | Source/Exe/AIRPORT.iso | bin | 1439744 -> 1441792 bytes | |||
| -rw-r--r-- | Source/Game.c | 70 | ||||
| -rw-r--r-- | Source/GameGui.c | 8 | ||||
| -rw-r--r-- | Source/LoadMenu.c | 17 | ||||
| -rw-r--r-- | Source/LoadMenu.h | 2 | ||||
| -rw-r--r-- | Source/Makefile | 25 | ||||
| -rw-r--r-- | Source/Menu.c | 29 |
9 files changed, 89 insertions, 75 deletions
diff --git a/Source/Aircraft.c b/Source/Aircraft.c index 7d7c799..057f7e8 100644 --- a/Source/Aircraft.c +++ b/Source/Aircraft.c @@ -57,7 +57,7 @@ static TYPE_CARTESIAN_POS AircraftCenterPos; static char* AircraftLiveryNamesTable[] = {"PHX", NULL};
static AIRCRAFT_LIVERY AircraftLiveryTable[] = {AIRCRAFT_LIVERY_0, AIRCRAFT_LIVERY_UNKNOWN};
-static char* GameFileList[] = { "cdrom:\\DATA\\SPRITES\\ARROW.TIM;1" };
+static const char* GameFileList[] = { "cdrom:\\DATA\\SPRITES\\ARROW.TIM;1" };
static void* GameFileDest[] = { (GsSprite*)&ArrowSpr };
@@ -216,8 +216,6 @@ bool AircraftRemove(uint8_t aircraftIdx) {
if (ptrAircraft->FlightDataIdx == aircraftIdx)
{
- DEBUG_PRINT_VAR(ptrAircraft->FlightDataIdx);
- DEBUG_PRINT_VAR(aircraftIdx);
ptrAircraft->State = STATE_IDLE;
Serial_printf("Flight %d removed\n", ptrAircraft->FlightDataIdx);
return true;
@@ -247,7 +245,6 @@ void AircraftHandler(void) AircraftSpeed(ptrAircraft);
// Check collision against all other aircraft.
-
for (j = 0; j < GAME_MAX_AIRCRAFT; j++)
{
TYPE_AIRCRAFT_DATA* ptrOtherAircraft = &AircraftData[j];
@@ -293,7 +290,6 @@ void AircraftHandler(void) { GameResumeFlightFromAutoStop(ptrAircraft->FlightDataIdx); }
-
ptrAircraft->State = GameGetFlightDataStateFromIdx(ptrAircraft->FlightDataIdx);
}
@@ -320,7 +316,7 @@ bool AircraftCheckPath(TYPE_AIRCRAFT_DATA* ptrAircraft, TYPE_AIRCRAFT_DATA* ptrO break;
case AIRCRAFT_DIR_SOUTH:
- nextTile = currentTile - GameGetLevelColumns();
+ nextTile = currentTile + GameGetLevelColumns();
break;
case AIRCRAFT_DIR_NO_DIRECTION:
@@ -639,9 +635,12 @@ void AircraftDirection(TYPE_AIRCRAFT_DATA* ptrAircraft) ptrAircraft->IsoPos.z += AircraftSpeedsTable[AIRCRAFT_SPEED_FINAL_Z];
- if (GameInsideLevelFromIsoPos(&ptrAircraft->IsoPos) == true)
+ if (GameInsideLevelFromIsoPos(&ptrAircraft->IsoPos) == false)
{
GameRemoveFlight(ptrAircraft->FlightDataIdx, true);
+
+ // Deactivate TYPE_AIRCRAFT instance.
+ ptrAircraft->State = STATE_IDLE;
}
}
}
diff --git a/Source/Exe/AIRPORT.elf b/Source/Exe/AIRPORT.elf Binary files differindex 08bad33..d0a5f1e 100755 --- a/Source/Exe/AIRPORT.elf +++ b/Source/Exe/AIRPORT.elf diff --git a/Source/Exe/AIRPORT.iso b/Source/Exe/AIRPORT.iso Binary files differindex 14766ca..d8c4130 100644 --- a/Source/Exe/AIRPORT.iso +++ b/Source/Exe/AIRPORT.iso diff --git a/Source/Game.c b/Source/Game.c index 614905d..52056ff 100644 --- a/Source/Game.c +++ b/Source/Game.c @@ -233,16 +233,16 @@ static SsVag BeepSnd; // Instances for player-specific data static TYPE_PLAYER PlayerData[MAX_PLAYERS]; -static char* GameFileList[] = { "cdrom:\\DATA\\SPRITES\\TILESET1.TIM;1" , - "cdrom:\\DATA\\SPRITES\\GAMEPLN.TIM;1" , - "cdrom:\\DATA\\SPRITES\\PLNBLUE.CLT;1" , - "cdrom:\\DATA\\SPRITES\\MOUSE.TIM;1" , - "cdrom:\\DATA\\SPRITES\\BLDNGS1.TIM;1" , - "cdrom:\\DATA\\SOUNDS\\RCPW1A1.VAG;1" , - "cdrom:\\DATA\\SOUNDS\\RCPM1A1.VAG;1" , - "cdrom:\\DATA\\SOUNDS\\RCTM1F1.VAG;1" , - "cdrom:\\DATA\\SOUNDS\\TAKEOFF1.VAG;1" , - "cdrom:\\DATA\\SOUNDS\\BEEP.VAG;1" }; +static const char* GameFileList[] = { "cdrom:\\DATA\\SPRITES\\TILESET1.TIM;1" , + "cdrom:\\DATA\\SPRITES\\GAMEPLN.TIM;1" , + "cdrom:\\DATA\\SPRITES\\PLNBLUE.CLT;1" , + "cdrom:\\DATA\\SPRITES\\MOUSE.TIM;1" , + "cdrom:\\DATA\\SPRITES\\BLDNGS1.TIM;1" , + "cdrom:\\DATA\\SOUNDS\\RCPW1A1.VAG;1" , + "cdrom:\\DATA\\SOUNDS\\RCPM1A1.VAG;1" , + "cdrom:\\DATA\\SOUNDS\\RCTM1F1.VAG;1" , + "cdrom:\\DATA\\SOUNDS\\TAKEOFF1.VAG;1" , + "cdrom:\\DATA\\SOUNDS\\BEEP.VAG;1" }; static void* GameFileDest[] = { (GsSprite*)&GameTilesetSpr , (GsSprite*)&GamePlaneSpr , @@ -255,7 +255,7 @@ static void* GameFileDest[] = { (GsSprite*)&GameTilesetSpr , (SsVag*)&TakeoffSnd , (SsVag*)&BeepSnd }; -static char* GamePlt[] = { "cdrom:\\DATA\\LEVELS\\LEVEL1.PLT;1" }; +static const char* GamePlt[] = { "cdrom:\\DATA\\LEVELS\\LEVEL1.PLT;1" }; static void* GamePltDest[] = {(TYPE_FLIGHT_DATA*)&FlightData }; static char* GameLevelList[] = {"cdrom:\\DATA\\LEVELS\\LEVEL1.LVL;1"}; @@ -914,23 +914,35 @@ void GamePlayerHandler(TYPE_PLAYER* ptrPlayer, TYPE_FLIGHT_DATA* ptrFlightData) // Recalculate ptrPlayer->SelectedAircraft. In case new aircraft appear, we may be pointing // to a incorrect instance. + dprintf("GameActiveAircraftList\n"); GameActiveAircraftList(ptrPlayer, ptrFlightData); + dprintf("GameAircraftCollisionFlag\n"); if (GameAircraftCollisionFlag == true) { TYPE_ISOMETRIC_POS IsoPos = AircraftGetIsoPos(GameAircraftCollisionIdx); CameraMoveToIsoPos(ptrPlayer, IsoPos); } + dprintf("GameStateUnboarding\n"); GameStateUnboarding(ptrPlayer, ptrFlightData); + dprintf("GameStateLockTarget\n"); GameStateLockTarget(ptrPlayer, ptrFlightData); + dprintf("GameStateSelectRunway\n"); GameStateSelectRunway(ptrPlayer, ptrFlightData); + dprintf("GameStateSelectTaxiwayRunway\n"); GameStateSelectTaxiwayRunway(ptrPlayer, ptrFlightData); + dprintf("GameStateSelectTaxiwayParking\n"); GameStateSelectTaxiwayParking(ptrPlayer, ptrFlightData); + dprintf("GameStateShowAircraft\n"); GameStateShowAircraft(ptrPlayer, ptrFlightData); + dprintf("CameraHandler\n"); CameraHandler(ptrPlayer); + dprintf("GameGuiActiveAircraftPage\n"); GameGuiActiveAircraftPage(ptrPlayer, ptrFlightData); + dprintf("GameSelectAircraftFromList\n"); GameSelectAircraftFromList(ptrPlayer, ptrFlightData); + dprintf("Finished GameHandler\n"); } /* ******************************************************************* @@ -1465,6 +1477,7 @@ void GameAircraftState(uint8_t i) { // Player(s) lost a flight! GameRemoveFlight(i, false); + dprintf("Flight %d lost\n", i); } } } @@ -2263,7 +2276,7 @@ void GameGetRunwayArray(void) * information about all available flights. * * @brief: - * Determines actions for aircraft on PAD_CROSS pressed. + * Actions for ptrPlayer->ShowAircraftData. * * @remarks: * @@ -3344,6 +3357,7 @@ void GameStateUnboarding(TYPE_PLAYER* ptrPlayer, TYPE_FLIGHT_DATA* ptrFlightData // Flight has finished. Remove aircraft and set finished flag ptrPlayer->Unboarding = false; GameRemoveFlight(ptrPlayer->FlightDataSelectedAircraft, true); + dprintf("YO\n"); } ptrPlayer->UnboardingSequenceIdx = 0; @@ -3604,25 +3618,25 @@ bool GameInsideLevelFromIsoPos(TYPE_ISOMETRIC_FIX16_POS* ptrIsoPos) if (x < 0) { - return true; + return false; } if (x > (GameLevelColumns << TILE_SIZE_BIT_SHIFT)) { - return true; + return false; } if (y < 0) { - return true; + return false; } if (y > (GameLevelColumns << TILE_SIZE_BIT_SHIFT) ) { - return true; + return false; } - return false; + return true; } /* ******************************************************************************************* @@ -3694,13 +3708,9 @@ void GameRemoveFlight(uint8_t idx, bool successful) } else { - Serial_printf("1\n"); - // GameRwyArray is filled with runway tiles. GameGetSelectedRunwayArray(GameUsedRwy[k], rwyArray, GAME_MAX_RWY_LENGTH * sizeof(uint16_t) ); - Serial_printf("2\n"); - if (SystemContains_u16( AircraftGetTileFromFlightDataIndex(idx), rwyArray, sizeof(rwyArray) / sizeof(rwyArray[0]) ) == true) @@ -3723,8 +3733,11 @@ void GameRemoveFlight(uint8_t idx, bool successful) // STATE_APPROACH is the only state which is not linked to a TYPE_AIRCRAFT_DATA instance. } - ptrPlayer->LockTarget = false; - ptrPlayer->LockedAircraft = FLIGHT_DATA_INVALID_IDX; + if (ptrPlayer->LockedAircraft == idx) + { + ptrPlayer->LockTarget = false; + ptrPlayer->LockedAircraft = FLIGHT_DATA_INVALID_IDX; + } if (successful == true) { @@ -3735,9 +3748,12 @@ void GameRemoveFlight(uint8_t idx, bool successful) GameScore = (GameScore < LOST_FLIGHT_PENALTY)? 0 : (GameScore - LOST_FLIGHT_PENALTY); } - if (ptrPlayer->SelectedAircraft >= j) + if (ptrPlayer->SelectedAircraft != 0) { - ptrPlayer->SelectedAircraft--; + if (ptrPlayer->SelectedAircraft >= j) + { + ptrPlayer->SelectedAircraft--; + } } FlightData.Passengers[idx] = 0; @@ -3968,7 +3984,7 @@ void GameAircraftCollision(uint8_t AircraftIdx) void GameStopFlight(uint8_t AircraftIdx) { FL_STATE* ptrState = &FlightData.State[AircraftIdx]; - + if (*ptrState == STATE_TAXIING) { // Only allow auto stop under taxi @@ -3992,7 +4008,7 @@ void GameStopFlight(uint8_t AircraftIdx) * that taxiing can be resumed. * * *******************************************************************************************/ - + void GameResumeFlightFromAutoStop(uint8_t AircraftIdx) { FL_STATE* ptrState = &FlightData.State[AircraftIdx]; diff --git a/Source/GameGui.c b/Source/GameGui.c index a6eda0a..c846029 100644 --- a/Source/GameGui.c +++ b/Source/GameGui.c @@ -206,10 +206,10 @@ static bool GameGuiClearPassengersLeft_Flag; static bool GameGuiBubbleShowFlag;
static bool GameGuiBubbleVibrationFlag;
-static char* GameFileList[] = { "cdrom:\\DATA\\SPRITES\\BUBBLE.TIM;1" ,
- "cdrom:\\DATA\\FONTS\\FONT_1.FNT;1" ,
- "cdrom:\\DATA\\SPRITES\\DEPARR.TIM;1" ,
- "cdrom:\\DATA\\SPRITES\\PAGEUPDN.TIM;1" };
+static const char* GameFileList[] = { "cdrom:\\DATA\\SPRITES\\BUBBLE.TIM;1" ,
+ "cdrom:\\DATA\\FONTS\\FONT_1.FNT;1" ,
+ "cdrom:\\DATA\\SPRITES\\DEPARR.TIM;1" ,
+ "cdrom:\\DATA\\SPRITES\\PAGEUPDN.TIM;1" };
static void* GameFileDest[] = {(GsSprite*)&BubbleSpr ,
(TYPE_FONT*)&RadioFont ,
diff --git a/Source/LoadMenu.c b/Source/LoadMenu.c index 60b00a7..52bd093 100644 --- a/Source/LoadMenu.c +++ b/Source/LoadMenu.c @@ -78,7 +78,7 @@ static void LoadMenuInit(void); static void ISR_LoadMenuVBlank(void); static bool LoadMenuISRHasEnded(void); static bool LoadMenuISRHasStarted(void); -static void LoadMenuLoadFileList( char* fileList[], void* dest[], +static void LoadMenuLoadFileList( const char* fileList[], void* dest[], uint8_t szFileList, uint8_t szDestList); /* ************************************* @@ -91,9 +91,9 @@ static GsSprite LoadMenuTitleSpr; static GsLine LoadMenuBarLines[LOADING_BAR_N_LINES]; static GsRectangle LoadMenuBarRect; -static char* LoadMenuFiles[] = { "cdrom:\\DATA\\SPRITES\\PLANE.TIM;1", - "cdrom:\\DATA\\SPRITES\\LOADING.TIM;1", - "cdrom:\\DATA\\FONTS\\FONT_2.FNT;1" }; +static const char* LoadMenuFiles[] = { "cdrom:\\DATA\\SPRITES\\PLANE.TIM;1", + "cdrom:\\DATA\\SPRITES\\LOADING.TIM;1", + "cdrom:\\DATA\\FONTS\\FONT_2.FNT;1" }; static void* LoadMenuDest[] = { (GsSprite*)&LoadMenuPlaneSpr, (GsSprite*)&LoadMenuTitleSpr, @@ -439,7 +439,7 @@ bool LoadMenuISRHasStarted(void) return isr_started; } -void LoadMenu( char* fileList[], +void LoadMenu( const char* fileList[], void* dest[], uint8_t szFileList , uint8_t szDestList) { @@ -451,11 +451,10 @@ void LoadMenu( char* fileList[], while (LoadMenuISRHasStarted() == false); } - LoadMenuLoadFileList(fileList,dest,szFileList,szDestList); - + LoadMenuLoadFileList(fileList, dest, szFileList, szDestList); } -void LoadMenuLoadFileList( char* fileList[], void* dest[], +void LoadMenuLoadFileList( const char* fileList[], void* dest[], uint8_t szFileList, uint8_t szDestList) { char aux_file_name[100]; @@ -472,7 +471,7 @@ void LoadMenuLoadFileList( char* fileList[], void* dest[], for (fileLoadedCount = 0; fileLoadedCount < szFileList ; fileLoadedCount++) { - strCurrentFile = fileList[fileLoadedCount]; + strCurrentFile = (char*)fileList[fileLoadedCount]; if (strCurrentFile == NULL) { diff --git a/Source/LoadMenu.h b/Source/LoadMenu.h index 3407dd1..2d1d5f7 100644 --- a/Source/LoadMenu.h +++ b/Source/LoadMenu.h @@ -15,7 +15,7 @@ * Global prototypes * *************************************/ -void LoadMenu( char* fileList[], +void LoadMenu( const char* fileList[], void* dest[], uint8_t szFileList , uint8_t szDestList); diff --git a/Source/Makefile b/Source/Makefile index 4beb71b..16b30b0 100644 --- a/Source/Makefile +++ b/Source/Makefile @@ -38,9 +38,9 @@ EXE_PATH = Exe # PCSX-R EMULATOR_DIR = ~/pcsxr -EMULATOR = pcsxr.exe +EMULATOR = pcsxr # Uncomment the line below if you get no sound output under Linux. -#SOUND_INTERFACE += padsp +SOUND_INTERFACE += padsp EMULATOR_FLAGS = -nogui -psxout # Objects definition @@ -110,11 +110,14 @@ SPRITE_OBJECTS += $(addprefix $(OBJ_FONTS_PATH)/, INTROFNT.TIM \ # Instructions # ------------------------------------ -build: $(BIN_TARGET_PATH)/$(PROJECT).bin +$(BIN_TARGET_PATH)/$(PROJECT).bin: $(EXE_PATH)/$(PROJECT).iso +#~ mkpsxiso $< $@ $(LICENSE_FILE) $(MUSIC_TRACKS) + mkpsxiso $< $@ $(LICENSE_FILE) +# $(PROJECT).cue is automatically generated by mkpsxiso rebuild: make clean - make build + make $(BIN_TARGET_PATH)/$(PROJECT).bin -include $(DEPS) @@ -127,7 +130,7 @@ clean: rm -f $(OBJ_LEVELS_DIR)/*.PLT rm -f $(OBJ_SPRITES_PATH)/*.TIM rm -f $(OBJ_FONTS_PATH)/*.TIM - + $(OBJ_DIR)/%.d: $(SRC_DIR)/%.c $(CC) $< $(DEFINE) $(CC_FLAGS) -MM > $@ @@ -141,18 +144,14 @@ $(EXE_PATH)/$(PROJECT).elf: $(OBJECTS) $(EXE_PATH)/$(PROJECT).iso: $(EXE_PATH)/$(PROJECT).exe $(SOUND_OBJECTS) $(LEVEL_OBJECTS) $(SPRITE_OBJECTS) mkisofs -o $@ -V $(PROJECT) -sysid PLAYSTATION $(CDROM_ROOT) -$(BIN_TARGET_PATH)/$(PROJECT).bin: $(EXE_PATH)/$(PROJECT).iso -#~ mkpsxiso $< $@ $(LICENSE_FILE) $(MUSIC_TRACKS) - mkpsxiso $< $@ $(LICENSE_FILE) -# $(PROJECT).cue is automatically generated by mkpsxiso $(EXE_PATH)/$(PROJECT).exe: $(EXE_PATH)/$(PROJECT).elf $(ELF2EXE) $< $@ $(ELF2EXE_FLAGS) cp $@ $(CDROM_ROOT) -#~ emulator: -#~ export PATH=$$PATH:$(EMULATOR_DIR) -#~ $(EMULATOR) -cdfile $(PROJECT_DIR)/Bin/$(PROJECT).bin $(EMULATOR_FLAGS) +run: $(BIN_TARGET_PATH)/$(PROJECT).bin + export PATH=$$PATH:$(EMULATOR_DIR) + $(EMULATOR) -cdfile $(PROJECT_DIR)/Bin/$(PROJECT).bin $(EMULATOR_FLAGS) $(OBJ_SPRITES_PATH)/%.TIM: $(SRC_SPRITES_PATH)/%.bmp $(SRC_SPRITES_PATH)/%.flags $(BMP2TIM) $< $@ `cat $(word 2,$^)` @@ -184,4 +183,4 @@ clean_music: # ---------------------------------------- # Phony targets # ---------------------------------------- -.PHONY: build sounds clean music levels tiles +.PHONY: sounds clean music diff --git a/Source/Menu.c b/Source/Menu.c index fa1c701..58a6260 100644 --- a/Source/Menu.c +++ b/Source/Menu.c @@ -131,20 +131,20 @@ static TYPE_CHEAT StackCheckCheat; static TYPE_CHEAT DevMenuCheat; static TYPE_CHEAT SerialCheat; -static char* MainMenuFiles[] = { "cdrom:\\DATA\\SPRITES\\MAINMENU.TIM;1" , - "cdrom:\\DATA\\SOUNDS\\BELL.VAG;1" , - "cdrom:\\DATA\\SOUNDS\\ACCEPT.VAG;1" , - "cdrom:\\DATA\\SPRITES\\BUTTONS.TIM;1" , - "cdrom:\\DATA\\SPRITES\\MENUSTAR.TIM;1" , +static const char* MainMenuFiles[] = { "cdrom:\\DATA\\SPRITES\\MAINMENU.TIM;1" , + "cdrom:\\DATA\\SOUNDS\\BELL.VAG;1" , + "cdrom:\\DATA\\SOUNDS\\ACCEPT.VAG;1" , + "cdrom:\\DATA\\SPRITES\\BUTTONS.TIM;1" , + "cdrom:\\DATA\\SPRITES\\MENUSTAR.TIM;1" , #ifndef NO_INTRO - "cdrom:\\DATA\\SPRITES\\PSXDISK.TIM;1" , - "cdrom:\\DATA\\FONTS\\INTROFNT.TIM;1" , - "cdrom:\\DATA\\SPRITES\\GPL.TIM;1" , - "cdrom:\\DATA\\SPRITES\\OPENSRC.TIM;1" , - "cdrom:\\DATA\\SOUNDS\\TRAYCL.VAG;1" , - "cdrom:\\DATA\\SOUNDS\\SPINDISK.VAG;1" + "cdrom:\\DATA\\SPRITES\\PSXDISK.TIM;1" , + "cdrom:\\DATA\\FONTS\\INTROFNT.TIM;1" , + "cdrom:\\DATA\\SPRITES\\GPL.TIM;1" , + "cdrom:\\DATA\\SPRITES\\OPENSRC.TIM;1" , + "cdrom:\\DATA\\SOUNDS\\TRAYCL.VAG;1" , + "cdrom:\\DATA\\SOUNDS\\SPINDISK.VAG;1" #endif // NO_INTRO - }; + }; static void* MainMenuDest[] = { (GsSprite*)&MenuSpr , (SsVag*)&BellSnd , @@ -207,7 +207,8 @@ void TwoPlayerMenu(void) void MainMenuInit(void) { - LoadMenu( MainMenuFiles,MainMenuDest, + LoadMenu( MainMenuFiles, + MainMenuDest, sizeof(MainMenuFiles) / sizeof(char*) , sizeof(MainMenuDest) / sizeof(void*) ); @@ -550,7 +551,7 @@ void MainMenuDrawButton(TYPE_MMBtn * btn) default: break; } - + MenuSpr.u += btn->offset_u; MenuSpr.v += btn->offset_v; MenuSpr.y -= MainMenuBtnAni[btn->timer]; |
