aboutsummaryrefslogtreecommitdiff
path: root/Source/Aircraft.c
diff options
context:
space:
mode:
authorXaviDCR92 <xavi.dcr@gmail.com>2017-06-27 00:58:12 +0200
committerXaviDCR92 <xavi.dcr@gmail.com>2017-06-27 00:58:12 +0200
commitf9f9924566e82aae02817a2fbc7962764f5418c3 (patch)
tree8f015dab806edb736cce9ca596d3b9849c529231 /Source/Aircraft.c
parentd1f55e8b45df2dfd84bdde3e2566ef14c9ba40f1 (diff)
downloadairport-f9f9924566e82aae02817a2fbc7962764f5418c3.tar.gz
* Reduced tileset sprite size from 64x64 to 64x48.
* Modified rendering functions to keep up with this size reduction. * Sprites in TIM have been reordered inside VRAM. * Other minor changes.
Diffstat (limited to 'Source/Aircraft.c')
-rw-r--r--Source/Aircraft.c33
1 files changed, 25 insertions, 8 deletions
diff --git a/Source/Aircraft.c b/Source/Aircraft.c
index 6e3a4ec..2f44602 100644
--- a/Source/Aircraft.c
+++ b/Source/Aircraft.c
@@ -10,6 +10,7 @@
#define AIRCRAFT_SIZE 16
#define AIRCRAFT_SIZE_FIX16 fix16_from_int(AIRCRAFT_SIZE)
+#define AIRCRAFT_INVALID_IDX 0xFF
/* *************************************
* Structs and enums
@@ -17,9 +18,10 @@
enum
{
- AIRCRAFT_SPRITE_SIZE = 24,
+ AIRCRAFT_SPRITE_W = 24,
+ AIRCRAFT_SPRITE_H = 16,
AIRCRAFT_SPRITE_VRAM_X = 800,
- AIRCRAFT_SPRITE_VRAM_Y = 304,
+ AIRCRAFT_SPRITE_VRAM_Y = 256,
};
enum
@@ -49,6 +51,7 @@ static TYPE_ISOMETRIC_POS AircraftCenterIsoPos;
static TYPE_CARTESIAN_POS AircraftCenterPos;
static char* AircraftLiveryNamesTable[] = {"PHX", NULL};
static AIRCRAFT_LIVERY AircraftLiveryTable[] = {AIRCRAFT_LIVERY_0, AIRCRAFT_LIVERY_UNKNOWN};
+static uint8_t AircraftFlightDataIdx_HashTable[GAME_MAX_AIRCRAFT];
static const fix16_t AircraftSpeedsTable[] = { [AIRCRAFT_SPEED_IDLE] = 0,
[AIRCRAFT_SPEED_GROUND] = 0x6666,
[AIRCRAFT_SPEED_TAKEOFF] = 0x20000,
@@ -79,8 +82,8 @@ void AircraftInit(void)
AircraftSpr.cx = PHX_LIVERY_CLUT_X;
AircraftSpr.cy = PHX_LIVERY_CLUT_Y;
- AircraftSpr.w = AIRCRAFT_SPRITE_SIZE;
- AircraftSpr.h = AIRCRAFT_SPRITE_SIZE;
+ AircraftSpr.w = AIRCRAFT_SPRITE_W;
+ AircraftSpr.h = AIRCRAFT_SPRITE_H;
/*AircraftSpr.tpage = 28;
AircraftSpr.u = 64;
@@ -93,6 +96,10 @@ void AircraftInit(void)
AircraftCenterIsoPos.z = 0;
AircraftCenterPos = GfxIsometricToCartesian(&AircraftCenterIsoPos);
+
+ memset( AircraftFlightDataIdx_HashTable,
+ AIRCRAFT_INVALID_IDX,
+ sizeof(AircraftFlightDataIdx_HashTable) / sizeof(AircraftFlightDataIdx_HashTable[0]) );
}
bool AircraftAddNew( TYPE_FLIGHT_DATA* ptrFlightData,
@@ -139,6 +146,7 @@ bool AircraftAddNew( TYPE_FLIGHT_DATA* ptrFlightData,
}
ptrAircraft->State = ptrFlightData->State[FlightDataIndex];
+ AircraftFlightDataIdx_HashTable[FlightDataIndex] = AircraftIndex;
ptrAircraft->Direction = AIRCRAFT_DIR_NORTH; // Default to north direction
@@ -499,7 +507,7 @@ void AircraftUpdateSpriteFromData(TYPE_AIRCRAFT_DATA* ptrAircraft)
switch(ptrAircraft->Direction)
{
case AIRCRAFT_DIR_NORTH:
- AircraftSpr.v += AircraftSpr.w;
+ AircraftSpr.v += AircraftSpr.h;
AircraftSpr.attribute |= H_FLIP;
break;
@@ -514,7 +522,7 @@ void AircraftUpdateSpriteFromData(TYPE_AIRCRAFT_DATA* ptrAircraft)
break;
case AIRCRAFT_DIR_WEST:
- AircraftSpr.v += AircraftSpr.w;
+ AircraftSpr.v += AircraftSpr.h;
AircraftSpr.attribute &= ~(H_FLIP);
break;
@@ -572,7 +580,16 @@ uint16_t AircraftGetTileFromFlightDataIndex(uint8_t index)
TYPE_AIRCRAFT_DATA* AircraftFromFlightDataIndex(uint8_t index)
{
- uint8_t i;
+ uint8_t idx = AircraftFlightDataIdx_HashTable[index];
+
+ if(idx == AIRCRAFT_INVALID_IDX)
+ {
+ return NULL;
+ }
+
+ return &AircraftData[idx];
+
+ /*uint8_t i;
TYPE_AIRCRAFT_DATA* ptrAircraft;
for(i = 0; i < GAME_MAX_AIRCRAFT; i++)
@@ -585,7 +602,7 @@ TYPE_AIRCRAFT_DATA* AircraftFromFlightDataIndex(uint8_t index)
}
}
- return NULL;
+ return NULL;*/
}
void AircraftFromFlightDataIndexAddTargets(uint8_t index, uint16_t* targets)