Bugfix: minutes were not being retrieved from PLT files.

Game.c: parking slots cannot be selected if an aircraft in STATE_PARKED state is on it.
Other fixes and improvements.
Added some tiles from TILESET2.TIM
This commit is contained in:
Xavier ASUS 2018-11-25 18:02:18 +01:00
parent 135a1e93cb
commit 64dbf5cdd5
23 changed files with 444 additions and 292 deletions

Binary file not shown.

View File

@ -16,4 +16,4 @@ DEPARTURE;PHX1001;100;00:25;21;240
DEPARTURE;PHX1002;200;01:00;19;240
DEPARTURE;PHX1003;200;01:30;21;240
DEPARTURE;PHX1004;200;02:00;19;240
DEPARTURE;PHX1004;200;03:00;21;240
DEPARTURE;PHX1004;200;03:00;21;240

Binary file not shown.

Binary file not shown.

View File

@ -28,53 +28,100 @@ long_line_behaviour=1
long_line_column=120
[files]
current_page=41
FILE_NAME_0=6076;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FAircraft.c;0;4
FILE_NAME_1=266;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FCamera.c;0;4
FILE_NAME_2=4018;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FEndAnimation.c;0;4
FILE_NAME_3=6782;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FFont.c;0;4
FILE_NAME_4=108515;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FGame.c;0;4
FILE_NAME_5=20231;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FGameGui.c;0;4
FILE_NAME_6=18939;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FGfx.c;0;4
FILE_NAME_7=11629;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FLoadMenu.c;0;4
FILE_NAME_8=746;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2Fmain.c;0;4
current_page=16
FILE_NAME_0=29974;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FAircraft.c;0;4
FILE_NAME_1=5814;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FCamera.c;0;4
FILE_NAME_2=4555;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FEndAnimation.c;0;4
FILE_NAME_3=6794;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FFont.c;0;4
FILE_NAME_4=131182;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FGame.c;0;4
FILE_NAME_5=43334;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FGameGui.c;0;4
FILE_NAME_6=19750;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FGfx.c;0;4
FILE_NAME_7=14837;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FLoadMenu.c;0;4
FILE_NAME_8=717;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2Fmain.c;0;4
FILE_NAME_9=745;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FMainMenuBtnAni.c;0;4
FILE_NAME_10=26018;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FMemCard.c;0;4
FILE_NAME_11=3987;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FMenu.c;0;4
FILE_NAME_12=1486;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FMessage.c;0;4
FILE_NAME_13=7435;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FPad.c;0;4
FILE_NAME_14=10669;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FPltParser.c;0;4
FILE_NAME_15=8394;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FPSXSDKIntro.c;0;4
FILE_NAME_16=1758;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FSerial.c;0;4
FILE_NAME_17=1221;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FSfx.c;0;4
FILE_NAME_18=23798;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FSystem.c;0;4
FILE_NAME_19=2698;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FTimer.c;0;4
FILE_NAME_20=451;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FAircraft.h;0;4
FILE_NAME_21=848;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FCamera.h;0;4
FILE_NAME_10=30632;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FMemCard.c;0;4
FILE_NAME_11=24291;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FMenu.c;0;4
FILE_NAME_12=3904;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FMessage.c;0;4
FILE_NAME_13=11137;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FPad.c;0;4
FILE_NAME_14=7538;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FPltParser.c;0;4
FILE_NAME_15=9894;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FPSXSDKIntro.c;0;4
FILE_NAME_16=1144;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FSerial.c;0;4
FILE_NAME_17=2669;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FSfx.c;0;4
FILE_NAME_18=2662;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FSystem.c;0;4
FILE_NAME_19=3753;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FTimer.c;0;4
FILE_NAME_20=1270;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FAircraft.h;0;4
FILE_NAME_21=913;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FCamera.h;0;4
FILE_NAME_22=529;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FEndAnimation.h;0;4
FILE_NAME_23=1133;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FFont.h;0;4
FILE_NAME_24=1633;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FGameGui.h;0;4
FILE_NAME_25=413;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FGame.h;0;4
FILE_NAME_26=3831;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FGameStructures.h;0;4
FILE_NAME_27=3564;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FGfx.h;0;4
FILE_NAME_28=406;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FGlobal_Inc.h;0;4
FILE_NAME_29=273;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FLoadMenu.h;0;4
FILE_NAME_23=1145;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FFont.h;0;4
FILE_NAME_24=1682;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FGameGui.h;0;4
FILE_NAME_25=1854;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FGame.h;0;4
FILE_NAME_26=7318;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FGameStructures.h;0;4
FILE_NAME_27=3576;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FGfx.h;0;4
FILE_NAME_28=709;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FGlobal_Inc.h;0;4
FILE_NAME_29=630;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FLoadMenu.h;0;4
FILE_NAME_30=559;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FMainMenuBtnAni.h;0;4
FILE_NAME_31=4622;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FMemCard.h;0;4
FILE_NAME_32=387;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FMenu.h;0;4
FILE_NAME_33=439;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FMessage.h;0;4
FILE_NAME_34=1550;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FPad.h;0;4
FILE_NAME_35=548;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FPltParser.h;0;4
FILE_NAME_33=806;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FMessage.h;0;4
FILE_NAME_34=1731;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FPad.h;0;4
FILE_NAME_35=762;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FPltParser.h;0;4
FILE_NAME_36=684;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FPSXSDKIntro.h;0;4
FILE_NAME_37=752;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FSerial.h;0;4
FILE_NAME_38=831;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FSfx.h;0;4
FILE_NAME_39=3384;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FSystem.h;0;4
FILE_NAME_37=490;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FSerial.h;0;4
FILE_NAME_38=815;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FSfx.h;0;4
FILE_NAME_39=4207;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FSystem.h;0;4
FILE_NAME_40=1066;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FTimer.h;0;4
FILE_NAME_41=592;Make;0;EUTF-8;1;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FMakefile;0;4
FILE_NAME_42=623;None;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FLevels%2FLEVEL3.PLT;0;4
FILE_NAME_41=521;Make;0;EUTF-8;1;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FMakefile;0;4
FILE_NAME_42=319;None;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FLevels%2FLEVEL3.PLT;0;4
FILE_NAME_43=319;None;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FLevels%2FEASY.PLT;0;4
FILE_NAME_44=319;None;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FLevels%2FLEVEL1.PLT;0;4
FILE_NAME_45=319;None;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FLevels%2FLEVEL2.PLT;0;4
FILE_NAME_46=1551;None;0;EISO-8859-1;0;1;0;%2Fhome%2Fxavier%2FAirport%2FLevels%2FTUTORIA1.PLT;0;4
FILE_NAME_47=0;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2Fpsxsdk-20150729%2Flibpsx%2Fsrc%2Fatexit.c;0;4
FILE_NAME_48=4528;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2Fpsxsdk-20150729%2Flibpsx%2Fsrc%2Fcdrom.c;0;4
FILE_NAME_49=0;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2Fpsxsdk-20150729%2Flibpsx%2Fsrc%2Fcop.c;0;4
FILE_NAME_50=0;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2Fpsxsdk-20150729%2Flibpsx%2Fsrc%2Fexception.c;0;4
FILE_NAME_51=20953;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2Fpsxsdk-20150729%2Flibpsx%2Fsrc%2Fgpu.c;0;4
FILE_NAME_52=0;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2Fpsxsdk-20150729%2Flibpsx%2Fsrc%2Flibc.c;0;4
FILE_NAME_53=0;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2Fpsxsdk-20150729%2Flibpsx%2Fsrc%2Fmemcard.c;0;4
FILE_NAME_54=0;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2Fpsxsdk-20150729%2Flibpsx%2Fsrc%2Fmemory.c;0;4
FILE_NAME_55=0;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2Fpsxsdk-20150729%2Flibpsx%2Fsrc%2Fpad.c;0;4
FILE_NAME_56=7762;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2Fpsxsdk-20150729%2Flibpsx%2Fsrc%2Fpsxsdk.c;0;4
FILE_NAME_57=0;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2Fpsxsdk-20150729%2Flibpsx%2Fsrc%2Fsetup.c;0;4
FILE_NAME_58=0;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2Fpsxsdk-20150729%2Flibpsx%2Fsrc%2Fsio.c;0;4
FILE_NAME_59=0;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2Fpsxsdk-20150729%2Flibpsx%2Fsrc%2Fspu.c;0;4
FILE_NAME_60=0;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2Fpsxsdk-20150729%2Flibpsx%2Fsrc%2Futil.c;0;4
FILE_NAME_61=0;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2Fpsxsdk-20150729%2Flibpsx%2Finclude%2Fbitstring.h;0;4
FILE_NAME_62=0;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2Fpsxsdk-20150729%2Flibpsx%2Finclude%2Fctype.h;0;4
FILE_NAME_63=0;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2Fpsxsdk-20150729%2Flibpsx%2Finclude%2Ferrno.h;0;4
FILE_NAME_64=0;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2Fpsxsdk-20150729%2Flibpsx%2Finclude%2Ffcntl.h;0;4
FILE_NAME_65=0;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2Fpsxsdk-20150729%2Flibpsx%2Finclude%2Finttypes.h;0;4
FILE_NAME_66=0;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2Fpsxsdk-20150729%2Flibpsx%2Finclude%2Fmemcard.h;0;4
FILE_NAME_67=3314;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2Fpsxsdk-20150729%2Flibpsx%2Finclude%2Fpsxbios.h;0;4
FILE_NAME_68=0;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2Fpsxsdk-20150729%2Flibpsx%2Finclude%2Fpsxcdrom.h;0;4
FILE_NAME_69=0;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2Fpsxsdk-20150729%2Flibpsx%2Finclude%2Fpsxgpu.h;0;4
FILE_NAME_70=0;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2Fpsxsdk-20150729%2Flibpsx%2Finclude%2Fpsxgte.h;0;4
FILE_NAME_71=9980;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2Fpsxsdk-20150729%2Flibpsx%2Finclude%2Fpsx.h;0;4
FILE_NAME_72=0;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2Fpsxsdk-20150729%2Flibpsx%2Finclude%2Fpsxpad.h;0;4
FILE_NAME_73=0;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2Fpsxsdk-20150729%2Flibpsx%2Finclude%2Fpsxsio.h;0;4
FILE_NAME_74=0;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2Fpsxsdk-20150729%2Flibpsx%2Finclude%2Fpsxspu.h;0;4
FILE_NAME_75=0;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2Fpsxsdk-20150729%2Flibpsx%2Finclude%2Fpsxutil.h;0;4
FILE_NAME_76=0;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2Fpsxsdk-20150729%2Flibpsx%2Finclude%2Frunexe.h;0;4
FILE_NAME_77=0;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2Fpsxsdk-20150729%2Flibpsx%2Finclude%2Fsearch.h;0;4
FILE_NAME_78=0;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2Fpsxsdk-20150729%2Flibpsx%2Finclude%2Fstdint.h;0;4
FILE_NAME_79=0;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2Fpsxsdk-20150729%2Flibpsx%2Finclude%2Fstdio.h;0;4
FILE_NAME_80=0;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2Fpsxsdk-20150729%2Flibpsx%2Finclude%2Fstdlib.h;0;4
FILE_NAME_81=0;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2Fpsxsdk-20150729%2Flibpsx%2Finclude%2Fstring.h;0;4
FILE_NAME_82=0;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2Fpsxsdk-20150729%2Flibpsx%2Finclude%2Fstrings.h;0;4
FILE_NAME_83=1969;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2Fpsxsdk-20150729%2Flibpsx%2Finclude%2Fthread.h;0;4
FILE_NAME_84=0;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2Fpsxsdk-20150729%2Flibpsx%2Finclude%2Ftypes.h;0;4
FILE_NAME_85=231;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2Fpsxsdk-20150729%2Flibpsx%2Finclude%2Funistd.h;0;4
FILE_NAME_86=0;ASM;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2Fpsxsdk-20150729%2Flibpsx%2Fsrc%2Fcdromh.s;0;4
FILE_NAME_87=70;ASM;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2Fpsxsdk-20150729%2Flibpsx%2Fsrc%2Fexc1.s;0;4
FILE_NAME_88=2629;ASM;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2Fpsxsdk-20150729%2Flibpsx%2Fsrc%2Fsyscalls.s;0;4
FILE_NAME_89=647;ASM;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2Fpsxsdk-20150729%2Flibpsx%2Fsrc%2Fstart%2Fstart.s;0;4
[VTE]
last_dir=/home/xavier/Airport/Bin
last_dir=/home/xavier
[build-menu]
NF_01_LB=Make Custom _Target...

View File

@ -21,6 +21,11 @@
static int32_t Camera_Max_X_Offset;
static int32_t Camera_Max_Y_Offset;
static int32_t Camera_Max_X_Limit;
static int32_t Camera_Min_X_Limit;
//~ static int32_t Camera_Min_Y_Limit;
//~ static int32_t Camera_Max_Y_Limit;
/* *************************************
* Local Prototypes
* *************************************/
@ -38,6 +43,13 @@ void CameraInit(TYPE_PLAYER* const ptrPlayer)
Camera_Max_X_Offset = GameGetLevelColumns() << TILE_SIZE_BIT_SHIFT;
Camera_Max_Y_Offset = GameGetLevelColumns() * TILE_SIZE_H;
Camera_Min_X_Limit = -Camera_Max_X_Offset;
Camera_Max_X_Limit = GameGetLevelColumns() << (TILE_SIZE_BIT_SHIFT - 1);
Camera_Max_X_Limit += Camera_Max_X_Limit >> 1;
DEBUG_PRINT_VAR(Camera_Min_X_Limit);
DEBUG_PRINT_VAR(Camera_Max_X_Limit);
}
void CameraApplyCoordinatesToSprite(TYPE_PLAYER* const ptrPlayer, GsSprite* spr)
@ -167,11 +179,38 @@ void CameraHandler(TYPE_PLAYER* const ptrPlayer)
CameraUpdateSpeed(ptrPlayer);
}
ptrPlayer->Camera.X_Offset += ptrPlayer->Camera.X_Speed;
bool limitAchieved = false;
if (ptrPlayer->Camera.X_Offset < 0)
{
if ((ptrPlayer->Camera.X_Offset + ptrPlayer->Camera.X_Speed) <= Camera_Min_X_Limit)
{
DEBUG_PRINT_VAR(ptrPlayer->Camera.X_Offset);
if (ptrPlayer->Camera.X_Speed < 0)
{
limitAchieved = true;
ptrPlayer->Camera.X_Speed = 0;
}
}
}
else if ((ptrPlayer->Camera.X_Offset + ptrPlayer->Camera.X_Speed) >= Camera_Max_X_Limit)
{
if (ptrPlayer->Camera.X_Speed > 0)
{
limitAchieved = true;
ptrPlayer->Camera.X_Speed = 0;
}
}
if (limitAchieved == false)
{
ptrPlayer->Camera.X_Offset += ptrPlayer->Camera.X_Speed;
}
ptrPlayer->Camera.Y_Offset += ptrPlayer->Camera.Y_Speed;
//DEBUG_PRINT_VAR(ptrPlayer->Camera.X_Offset);
//DEBUG_PRINT_VAR(ptrPlayer->Camera.Y_Offset);
//~ DEBUG_PRINT_VAR(ptrPlayer->Camera.X_Offset);
//~ DEBUG_PRINT_VAR(ptrPlayer->Camera.Y_Offset);
}
bool CameraSpecialConditions(TYPE_PLAYER* const ptrPlayer)

BIN
Source/Exe/AIRPORT.elf Normal file → Executable file

Binary file not shown.

Binary file not shown.

View File

@ -96,7 +96,7 @@ enum
enum
{
BUILDING_NONE = 0,
BUILDING_NONE,
BUILDING_HANGAR,
BUILDING_ILS,
BUILDING_ATC_TOWER,
@ -111,7 +111,7 @@ enum
enum
{
TILE_GRASS = 0,
TILE_GRASS,
TILE_ASPHALT_WITH_BORDERS,
TILE_WATER,
TILE_ASPHALT,
@ -136,17 +136,18 @@ enum
TILE_TAXIWAY_4WAY_CROSSING,
TILE_RWY_EXIT_2,
LAST_TILE_TILESET1 = TILE_RWY_EXIT_2
LAST_TILE_TILESET1 = TILE_RWY_EXIT_2,
TILE_UNUSED_1,
TILE_TAXIWAY_CORNER_GRASS_3,
FIRST_TILE_TILESET2 = TILE_UNUSED_1,
LAST_TILE_TILESET2 = TILE_TAXIWAY_CORNER_GRASS_3
};
enum
{
LAST_TILE_TILESET2 = LAST_TILE_TILESET1
};
enum
{
SOUND_M1_INDEX = 0,
SOUND_M1_INDEX,
SOUND_W1_INDEX,
MAX_RADIO_CHATTER_SOUNDS
@ -195,7 +196,6 @@ static void GameActiveAircraftList(TYPE_PLAYER* const ptrPlayer, TYPE_FLIGHT_DAT
static void GameRemainingAircraft(const uint8_t i);
static void GameMinimumSpawnTimeout(void);
static void GameRenderBuildingAircraft(TYPE_PLAYER* const ptrPlayer);
static void GameBuildingsInit(void);
static void GameGetAircraftTilemap(const uint8_t i);
static bool GameWaypointCheckExisting(TYPE_PLAYER* const ptrPlayer, uint16_t temp_tile);
static void GameDrawBackground(TYPE_PLAYER* const ptrPlayer);
@ -229,7 +229,6 @@ static bool spawnMinTimeFlag;
static bool aircraftCreated;
static bool GameAircraftCollisionFlag;
static uint8_t GameAircraftCollisionIdx;
static TYPE_BUILDING_DATA GameBuildingData[MAX_BUILDING_ID];
static uint8_t GameAircraftTilemap[GAME_MAX_MAP_SIZE][GAME_MAX_AIRCRAFT_PER_TILE];
static TYPE_TILE_UV_DATA GameLevelBuffer_UVData[GAME_MAX_MAP_SIZE];
@ -428,6 +427,7 @@ void GameInit(const TYPE_GAME_CONFIGURATION* const pGameCfg)
static const char* const GameFileList[] =
{
"DATA\\SPRITES\\TILESET1.TIM",
"DATA\\SPRITES\\TILESET2.TIM",
"DATA\\SPRITES\\GAMEPLN.TIM",
"DATA\\SPRITES\\PLNBLUE.CLT",
"DATA\\SPRITES\\MOUSE.TIM",
@ -442,6 +442,7 @@ void GameInit(const TYPE_GAME_CONFIGURATION* const pGameCfg)
static void* GameFileDest[] =
{
&GameTilesetSpr,
&GameTileset2Spr,
&GamePlaneSpr,
NULL, // CLT files must use NULL pointers
&GameMouseSpr,
@ -477,8 +478,6 @@ void GameInit(const TYPE_GAME_CONFIGURATION* const pGameCfg)
GameGuiInit();
GameBuildingsInit();
memset(GameRwy, 0, GAME_MAX_RUNWAYS * sizeof (uint16_t) );
memset(GameUsedRwy, 0, GAME_MAX_RUNWAYS * sizeof (uint16_t) );
@ -592,141 +591,6 @@ void GameInit(const TYPE_GAME_CONFIGURATION* const pGameCfg)
}
}
/* ***************************************************************************************
*
* @name: void GameBuildingsInit(void)
*
* @author: Xavier Del Campo
*
*
* @brief:
* Reportedly, it initializes coordinate/size data for each building instance.
*
* @remarks:
*
*
* ***************************************************************************************/
static void GameBuildingsInit(void)
{
enum
{
BUILDING_ATC_LOC_OFFSET_X = TILE_SIZE >> 1,
BUILDING_ATC_LOC_OFFSET_Y = TILE_SIZE >> 1,
BUILDING_ILS_OFFSET_X = 0,
BUILDING_ILS_OFFSET_Y = 0,
BUILDING_GATE_OFFSET_X = (TILE_SIZE >> 1) - 4,
BUILDING_GATE_OFFSET_Y = 0,
BUILDING_HANGAR_OFFSET_X = 4,
BUILDING_HANGAR_OFFSET_Y = TILE_SIZE >> 1,
BUILDING_ATC_TOWER_OFFSET_X = TILE_SIZE >> 2,
BUILDING_ATC_TOWER_OFFSET_Y = TILE_SIZE >> 1,
};
enum
{
BUILDING_ILS_U = 34,
BUILDING_ILS_V = 0,
BUILDING_ILS_W = 24,
BUILDING_ILS_H = 34,
BUILDING_GATE_U = 0,
BUILDING_GATE_V = 70,
BUILDING_GATE_W = 28,
BUILDING_GATE_H = 25,
BUILDING_HANGAR_U = 0,
BUILDING_HANGAR_V = 34,
BUILDING_HANGAR_W = 51,
BUILDING_HANGAR_H = 36,
BUILDING_ATC_TOWER_U = 58,
BUILDING_ATC_TOWER_V = 0,
BUILDING_ATC_TOWER_W = 29,
BUILDING_ATC_TOWER_H = 34,
};
enum
{
BUILDING_ILS_ORIGIN_X = 10,
BUILDING_ILS_ORIGIN_Y = 22,
BUILDING_GATE_ORIGIN_X = 20,
BUILDING_GATE_ORIGIN_Y = 8,
BUILDING_HANGAR_ORIGIN_X = 20,
BUILDING_HANGAR_ORIGIN_Y = 11,
BUILDING_ATC_TOWER_ORIGIN_X = 12,
BUILDING_ATC_TOWER_ORIGIN_Y = 20,
};
memset(GameBuildingData, 0, sizeof (TYPE_BUILDING_DATA) );
GameBuildingData[BUILDING_GATE].IsoPos.x = BUILDING_GATE_OFFSET_X;
GameBuildingData[BUILDING_GATE].IsoPos.y = BUILDING_GATE_OFFSET_Y;
// z coordinate set to 0 by default.
// BUILDING_ATC_LOC coordinates inside tile.
GameBuildingData[BUILDING_ATC_LOC].IsoPos.x = BUILDING_ATC_LOC_OFFSET_X;
GameBuildingData[BUILDING_ATC_LOC].IsoPos.y = BUILDING_ATC_LOC_OFFSET_Y;
// z coordinate set to 0 by default.
GameBuildingData[BUILDING_GATE].orig_x = BUILDING_GATE_ORIGIN_X;
GameBuildingData[BUILDING_GATE].orig_y = BUILDING_GATE_ORIGIN_Y;
GameBuildingData[BUILDING_GATE].u = BUILDING_GATE_U;
GameBuildingData[BUILDING_GATE].v = BUILDING_GATE_V;
GameBuildingData[BUILDING_GATE].w = BUILDING_GATE_W;
GameBuildingData[BUILDING_GATE].h = BUILDING_GATE_H;
// BUILDING_ILS coordinates inside tile.
GameBuildingData[BUILDING_ILS].IsoPos.x = BUILDING_ILS_OFFSET_X;
GameBuildingData[BUILDING_ILS].IsoPos.y = BUILDING_ILS_OFFSET_Y;
// z coordinate set to 0 by default.
GameBuildingData[BUILDING_ILS].orig_x = BUILDING_ILS_ORIGIN_X;
GameBuildingData[BUILDING_ILS].orig_y = BUILDING_ILS_ORIGIN_Y;
GameBuildingData[BUILDING_ILS].u = BUILDING_ILS_U;
GameBuildingData[BUILDING_ILS].v = BUILDING_ILS_V;
GameBuildingData[BUILDING_ILS].w = BUILDING_ILS_W;
GameBuildingData[BUILDING_ILS].h = BUILDING_ILS_H;
// BUILDING_HANGAR coordinates inside tile.
GameBuildingData[BUILDING_HANGAR].IsoPos.x = BUILDING_HANGAR_OFFSET_X;
GameBuildingData[BUILDING_HANGAR].IsoPos.y = BUILDING_HANGAR_OFFSET_Y;
// z coordinate set to 0 by default.
GameBuildingData[BUILDING_HANGAR].orig_x = BUILDING_HANGAR_ORIGIN_X;
GameBuildingData[BUILDING_HANGAR].orig_y = BUILDING_HANGAR_ORIGIN_Y;
GameBuildingData[BUILDING_HANGAR].u = BUILDING_HANGAR_U;
GameBuildingData[BUILDING_HANGAR].v = BUILDING_HANGAR_V;
GameBuildingData[BUILDING_HANGAR].w = BUILDING_HANGAR_W;
GameBuildingData[BUILDING_HANGAR].h = BUILDING_HANGAR_H;
// BUILDING_ATC_TOWER coordinates inside tile.
GameBuildingData[BUILDING_ATC_TOWER].IsoPos.x = BUILDING_ATC_TOWER_OFFSET_X;
GameBuildingData[BUILDING_ATC_TOWER].IsoPos.y = BUILDING_ATC_TOWER_OFFSET_Y;
// z coordinate set to 0 by default.
GameBuildingData[BUILDING_ATC_TOWER].orig_x = BUILDING_ATC_TOWER_ORIGIN_X;
GameBuildingData[BUILDING_ATC_TOWER].orig_y = BUILDING_ATC_TOWER_ORIGIN_Y;
GameBuildingData[BUILDING_ATC_TOWER].u = BUILDING_ATC_TOWER_U;
GameBuildingData[BUILDING_ATC_TOWER].v = BUILDING_ATC_TOWER_V;
GameBuildingData[BUILDING_ATC_TOWER].w = BUILDING_ATC_TOWER_W;
GameBuildingData[BUILDING_ATC_TOWER].h = BUILDING_ATC_TOWER_H;
// BUILDING_GATE coordinates inside tile.
GameBuildingData[BUILDING_GATE].IsoPos.x = BUILDING_GATE_OFFSET_X;
GameBuildingData[BUILDING_GATE].IsoPos.y = BUILDING_GATE_OFFSET_Y;
// z coordinate set to 0 by default.
/*BUILDING_ILS,
BUILDING_ATC_TOWER,
BUILDING_ATC_LOC,
BUILDING_TERMINAL,
BUILDING_TERMINAL_2,
BUILDING_GATE,*/
}
/* ***************************************************************************************
*
* @name: void GameEmergencyMode(void)
@ -1242,6 +1106,133 @@ void GameDrawBackground(TYPE_PLAYER* const ptrPlayer)
void GameRenderBuildingAircraft(TYPE_PLAYER* const ptrPlayer)
{
enum
{
BUILDING_ATC_LOC_OFFSET_X = TILE_SIZE >> 1,
BUILDING_ATC_LOC_OFFSET_Y = TILE_SIZE >> 1,
BUILDING_ILS_OFFSET_X = 0,
BUILDING_ILS_OFFSET_Y = 0,
BUILDING_GATE_OFFSET_X = (TILE_SIZE >> 1) - 4,
BUILDING_GATE_OFFSET_Y = 0,
BUILDING_HANGAR_OFFSET_X = 4,
BUILDING_HANGAR_OFFSET_Y = TILE_SIZE >> 1,
BUILDING_ATC_TOWER_OFFSET_X = TILE_SIZE >> 2,
BUILDING_ATC_TOWER_OFFSET_Y = TILE_SIZE >> 1,
};
enum
{
BUILDING_ILS_U = 34,
BUILDING_ILS_V = 0,
BUILDING_ILS_W = 24,
BUILDING_ILS_H = 34,
BUILDING_GATE_U = 0,
BUILDING_GATE_V = 70,
BUILDING_GATE_W = 28,
BUILDING_GATE_H = 25,
BUILDING_HANGAR_U = 0,
BUILDING_HANGAR_V = 34,
BUILDING_HANGAR_W = 51,
BUILDING_HANGAR_H = 36,
BUILDING_ATC_TOWER_U = 58,
BUILDING_ATC_TOWER_V = 0,
BUILDING_ATC_TOWER_W = 29,
BUILDING_ATC_TOWER_H = 34,
};
enum
{
BUILDING_ILS_ORIGIN_X = 10,
BUILDING_ILS_ORIGIN_Y = 22,
BUILDING_GATE_ORIGIN_X = 20,
BUILDING_GATE_ORIGIN_Y = 8,
BUILDING_HANGAR_ORIGIN_X = 20,
BUILDING_HANGAR_ORIGIN_Y = 11,
BUILDING_ATC_TOWER_ORIGIN_X = 12,
BUILDING_ATC_TOWER_ORIGIN_Y = 20,
};
static const TYPE_BUILDING_DATA GameBuildingData[MAX_BUILDING_ID] =
{
[BUILDING_GATE] =
{
.IsoPos.x = BUILDING_GATE_OFFSET_X,
.IsoPos.y = BUILDING_GATE_OFFSET_Y,
.orig_x = BUILDING_GATE_ORIGIN_X,
.orig_y = BUILDING_GATE_ORIGIN_Y,
.u = BUILDING_GATE_U,
.v = BUILDING_GATE_V,
.w = BUILDING_GATE_W,
.h = BUILDING_GATE_H,
// z coordinate set to 0 by default.
},
[BUILDING_ATC_LOC] =
{
.IsoPos.x = BUILDING_ATC_LOC_OFFSET_X,
.IsoPos.y = BUILDING_ATC_LOC_OFFSET_Y,
},
[BUILDING_ILS] =
{
.IsoPos.x = BUILDING_ILS_OFFSET_X,
.IsoPos.y = BUILDING_ILS_OFFSET_Y,
// z coordinate set to 0 by default.
.orig_x = BUILDING_ILS_ORIGIN_X,
.orig_y = BUILDING_ILS_ORIGIN_Y,
.u = BUILDING_ILS_U,
.v = BUILDING_ILS_V,
.w = BUILDING_ILS_W,
.h = BUILDING_ILS_H,
},
[BUILDING_HANGAR] =
{
// BUILDING_HANGAR coordinates inside tile.
.IsoPos.x = BUILDING_HANGAR_OFFSET_X,
.IsoPos.y = BUILDING_HANGAR_OFFSET_Y,
// z coordinate set to 0 by default.
.orig_x = BUILDING_HANGAR_ORIGIN_X,
.orig_y = BUILDING_HANGAR_ORIGIN_Y,
.u = BUILDING_HANGAR_U,
.v = BUILDING_HANGAR_V,
.w = BUILDING_HANGAR_W,
.h = BUILDING_HANGAR_H,
},
[BUILDING_ATC_TOWER] =
{
// BUILDING_ATC_TOWER coordinates inside tile.
.IsoPos.x = BUILDING_ATC_TOWER_OFFSET_X,
.IsoPos.y = BUILDING_ATC_TOWER_OFFSET_Y,
// z coordinate set to 0 by default.
.orig_x = BUILDING_ATC_TOWER_ORIGIN_X,
.orig_y = BUILDING_ATC_TOWER_ORIGIN_Y,
.u = BUILDING_ATC_TOWER_U,
.v = BUILDING_ATC_TOWER_V,
.w = BUILDING_ATC_TOWER_W,
.h = BUILDING_ATC_TOWER_H,
},
[BUILDING_GATE] =
{
// BUILDING_GATE coordinates inside tile.
.IsoPos.x = BUILDING_GATE_OFFSET_X,
.IsoPos.y = BUILDING_GATE_OFFSET_Y,
// z coordinate set to 0 by default.
}
};
uint16_t tileNr;
uint8_t rows = 0;
uint8_t columns = 0;
@ -1589,6 +1580,11 @@ static void GameInitTileUVTable(void)
uint8_t CurrentTile = (uint8_t)(levelBuffer[i] & 0x007F); // Remove building data
// and mirror flag.
if (CurrentTile >= FIRST_TILE_TILESET2)
{
CurrentTile -= FIRST_TILE_TILESET2;
}
GameLevelBuffer_UVData[i].u = (short)(CurrentTile % COLUMNS_PER_TILESET) << TILE_SIZE_BIT_SHIFT;
GameLevelBuffer_UVData[i].v = (short)(CurrentTile / COLUMNS_PER_TILESET) * TILE_SIZE_H;
}
@ -1843,7 +1839,6 @@ static void GameRenderTerrainPrecalculations(TYPE_PLAYER* const ptrPlayer, const
void GameRenderTerrain(TYPE_PLAYER* const ptrPlayer)
{
uint16_t i;
uint8_t aux_id;
for (i = 0 ; i < GameLevelSize; i++)
{
@ -1851,7 +1846,7 @@ void GameRenderTerrain(TYPE_PLAYER* const ptrPlayer)
{
bool flip_id;
GsSprite* ptrTileset;
uint8_t aux_id;
uint8_t CurrentTile = (uint8_t)(levelBuffer[i] & 0x00FF);
// Flipped tiles have bit 7 set.
@ -2219,8 +2214,7 @@ static void GameStateSelectTaxiwayParking(TYPE_PLAYER* const ptrPlayer, TYPE_FLI
ptrPlayer->InvalidPath = true;
}
#if 0
for (i = 0; GAME_MAX_AIRCRAFT; i++)
for (i = 0; i < GAME_MAX_AIRCRAFT; i++)
{
if (ptrPlayer->InvalidPath == false)
{
@ -2241,9 +2235,6 @@ static void GameStateSelectTaxiwayParking(TYPE_PLAYER* const ptrPlayer, TYPE_FLI
}
}
}
#endif
Serial_printf("Yo\n");
if (ptrPlayer->PadKeySinglePress_Callback(PAD_TRIANGLE))
{

View File

@ -27,7 +27,7 @@ CDROM_ROOT=$(PROJECT_DIR)/cdimg
BIN_TARGET_PATH = $(PROJECT_DIR)/Bin
#Uncomment this DEFINE below to use Airport together with OpenSend + QPSXSerial toolchain.
DEFINE += -DSERIAL_INTERFACE
#DEFINE += -DSERIAL_INTERFACE
# PSXSDK tools definitions
# ELF2EXE:

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.7.2, 2018-11-24T13:04:29. -->
<!-- Written by QtCreator 4.7.2, 2018-11-25T17:34:10. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>

View File

@ -251,20 +251,24 @@ void MainWindow::processMapFile(const QByteArray& data)
level_size = ch;
const QString filePath = "../../Sprites/TILESET1.bmp";
QPixmap tile1(filePath);
const int expected_filesize = (DATA_HEADER_SIZE + (level_size * level_size));
if (data.count() >= expected_filesize)
if (not tilesetPaths[0].isEmpty()
&&
not tilesetPaths[1].isEmpty())
{
parseMapData(ds, tile1);
}
else
{
showError(tr("Invalid file size. Expected ")
+ QString::number(expected_filesize, 10));
QPixmap tile1(tilesetPaths[0]);
QPixmap tile2(tilesetPaths[1]);
const int expected_filesize = (DATA_HEADER_SIZE + (level_size * level_size));
if (data.count() >= expected_filesize)
{
parseMapData(ds, tile1, tile2);
}
else
{
showError(tr("Invalid file size. Expected ")
+ QString::number(expected_filesize, 10));
}
}
}
else
@ -273,7 +277,7 @@ void MainWindow::processMapFile(const QByteArray& data)
}
}
void MainWindow::parseMapData(QDataStream& ds, const QPixmap& tileSet)
void MainWindow::parseMapData(QDataStream& ds, const QPixmap& tileSet, const QPixmap& tileSet2)
{
char airportName[0x1A];
@ -290,89 +294,143 @@ void MainWindow::parseMapData(QDataStream& ds, const QPixmap& tileSet)
{
for (int i = 0; i < level_size; i++)
{
enum
{
TILE_GRASS = 0,
TILE_ASPHALT_WITH_BORDERS,
TILE_WATER,
TILE_ASPHALT,
TILE_RWY_MID,
TILE_RWY_START_1,
TILE_RWY_START_2,
TILE_PARKING,
TILE_PARKING_2,
TILE_TAXIWAY_INTERSECT_GRASS,
TILE_TAXIWAY_GRASS,
TILE_TAXIWAY_CORNER_GRASS,
TILE_HALF_WATER_1,
TILE_HALF_WATER_2,
TILE_RWY_HOLDING_POINT,
TILE_RWY_HOLDING_POINT_2,
TILE_RWY_EXIT,
TILE_TAXIWAY_CORNER_GRASS_2,
TILE_TAXIWAY_4WAY_CROSSING,
TILE_RWY_EXIT_2,
LAST_TILE_TILESET1 = TILE_RWY_EXIT_2,
TILE_UNUSED_1,
TILE_TAXIWAY_CORNER_GRASS_3,
FIRST_TILE_TILESET2 = TILE_UNUSED_1,
LAST_TILE_TILESET2 = TILE_TAXIWAY_CORNER_GRASS_3
};
int u;
int v;
char byte[2];
ds.readRawData(byte, 2);
quint8 CurrentTile = static_cast<quint8>(byte[1]);
quint8 CurrentBuilding = static_cast<quint8>(byte[0]);
quint8 buildingNoMirror = CurrentBuilding & 0x7F;
quint8 tileNoMirror = CurrentTile & 0x7F;
const QPixmap* p = nullptr;
if (CurrentTile & TILE_MIRROR_FLAG)
if (tileNoMirror <= LAST_TILE_TILESET1)
{
u = static_cast<int>(((CurrentTile & 0x7F) % 4) * 64);
v = static_cast<int>(((CurrentTile & 0x7F) / 4) * 48);
p = &tileSet;
}
else
else if (tileNoMirror <= LAST_TILE_TILESET2)
{
u = static_cast<int>((CurrentTile % 4) * 64);
v = static_cast<int>((CurrentTile / 4) * 48);
p = &tileSet2;
CurrentTile -= FIRST_TILE_TILESET2;
tileNoMirror -= FIRST_TILE_TILESET2;
}
QImage cropped = tileSet.copy(u, v, 64, 48).toImage();
if (CurrentTile & TILE_MIRROR_FLAG)
if (p != nullptr)
{
cropped = cropped.mirrored(true, false);
}
bool selected = false;
if (selected_item != -1)
{
if (selected_item == ((j * level_size) + i))
if (CurrentTile & TILE_MIRROR_FLAG)
{
selected = true;
u = static_cast<int>((tileNoMirror % 4) * 64);
v = static_cast<int>((tileNoMirror / 4) * 48);
}
}
cropped = cropped.convertToFormat(QImage::Format_ARGB32); // or maybe other format
for (int i = 0; i < cropped.width(); i++)
{
for (int j = 0; j < cropped.height(); j++)
else
{
QColor rgb = cropped.pixel(i, j);
u = static_cast<int>((CurrentTile % 4) * 64);
v = static_cast<int>((CurrentTile / 4) * 48);
}
if (rgb == QColor(Qt::magenta))
QImage cropped = p->copy(u, v, 64, 48).toImage();
if (CurrentTile & TILE_MIRROR_FLAG)
{
cropped = cropped.mirrored(true, false);
}
bool selected = false;
if (selected_item != -1)
{
if (selected_item == ((j * level_size) + i))
{
cropped.setPixel(i, j, qRgba(0,0,0,0));
}
else if (selected )
{
QColor c = cropped.pixelColor(i, j);
c.setRed(255 - c.red());
c.setBlue(255 - c.blue());
c.setGreen(255 - c.green());
cropped.setPixel(i, j, qRgb(c.red(), c.green(), c.blue()));
selected = true;
}
}
}
QGraphicsPixmapItem* const it = gscene.addPixmap(QPixmap::fromImage(cropped));
cropped = cropped.convertToFormat(QImage::Format_ARGB32); // or maybe other format
if (it != nullptr)
{
const int x = ((i * TILE_SIZE) - (i * (TILE_SIZE / 2))) - (j * (TILE_SIZE / 2));
const int y = (j * (TILE_SIZE / 4)) + (i * (TILE_SIZE / 4));
it->setX(x);
it->setY(y);
if (ui.showNumbers_Checkbox->isChecked() )
for (int i = 0; i < cropped.width(); i++)
{
QGraphicsTextItem* const io = new QGraphicsTextItem();
if (io != nullptr)
for (int j = 0; j < cropped.height(); j++)
{
io->setPos(x + (TILE_SIZE / 4), y);
io->setPlainText(QString::number(i + (j * level_size)));
QColor rgb = cropped.pixel(i, j);
gscene.addItem(io);
if (rgb == QColor(Qt::magenta))
{
cropped.setPixel(i, j, qRgba(0,0,0,0));
}
else if (selected )
{
QColor c = cropped.pixelColor(i, j);
/* Append pointer to the list so it can be
* safely removed on the constructor. */
textItems.append(io);
c.setRed(255 - c.red());
c.setBlue(255 - c.blue());
c.setGreen(255 - c.green());
cropped.setPixel(i, j, qRgb(c.red(), c.green(), c.blue()));
}
}
}
QGraphicsPixmapItem* const it = gscene.addPixmap(QPixmap::fromImage(cropped));
if (it != nullptr)
{
const int x = ((i * TILE_SIZE) - (i * (TILE_SIZE / 2))) - (j * (TILE_SIZE / 2));
const int y = (j * (TILE_SIZE / 4)) + (i * (TILE_SIZE / 4));
it->setX(x);
it->setY(y);
if (ui.showNumbers_Checkbox->isChecked() )
{
QGraphicsTextItem* const io = new QGraphicsTextItem();
if (io != nullptr)
{
io->setPos(x + (TILE_SIZE / 4), y);
io->setPlainText(QString::number(i + (j * level_size)));
gscene.addItem(io);
/* Append pointer to the list so it can be
* safely removed on the constructor. */
textItems.append(io);
}
}
}
}
@ -438,12 +496,15 @@ void MainWindow::loadTilesetData(void)
tilesets_to_check << "tileset1";
tilesets_to_check << "tileset2";
int j = 0;
int i = 0;
foreach (QString tileset, tilesets_to_check)
{
tilesetFile.beginGroup(tileset);
tilesetPaths[j++] = tilesetFile.value("path").toString();
while (1)
{
QString tileNumber = "tile" + QString::number(i);

View File

@ -37,7 +37,7 @@ private:
void appSettings(void);
void loadTilesetData(void);
void loadBuildingData(void);
void parseMapData(QDataStream &ds, const QPixmap &tileSet);
void parseMapData(QDataStream &ds, const QPixmap &tileSet, const QPixmap &tileSet2);
Ui::MainWindow ui;
QString _last_dir;
@ -49,6 +49,7 @@ private:
QList<QGraphicsTextItem*> textItems;
QShortcut tileSet;
QShortcut tileMoveUp;
QString tilesetPaths[2];
private slots:
void loadMap(void);

View File

@ -15,7 +15,7 @@ void MyGraphicsScene::mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent)
{
QGraphicsItem *it = this->itemAt(mouseEvent->scenePos(), QTransform());
if (it != NULL)
if (it != nullptr)
{
emit positionClicked(mouseEvent->scenePos());
}

View File

@ -1,4 +1,5 @@
[tileset1]
path = "../../Sprites/TILESET1.bmp"
tile0 = "Grass"
tile1 = "Asphalt with borders"
tile2 = "Water"
@ -18,4 +19,9 @@ tile15 = "Runway holding point 2"
tile16 = "Runway enter/exit, asphalt border 1"
tile17 = "Taxiway corner, grass border 2"
tile18 = "Taxiway 4-way crossing, grass border"
tile19 = "Runway enter/exit, asphalt border 2"
tile19 = "Runway enter/exit, asphalt border 2"
[tileset2]
path = "../../Sprites/TILESET2.bmp"
tile20 = "Unused"
tile21 = "Taxiway corner, grass border 3"

View File

@ -45,8 +45,8 @@ bool PltParserLoadFile(const char* strPath, TYPE_FLIGHT_DATA* const ptrFlightDat
char lineBuffer[LINE_MAX_CHARACTERS];
char* lineBufferPtr;
char* pltBufferSavePtr;
char strHour[PLT_HOUR_MINUTE_CHARACTERS];
char strMinutes[PLT_HOUR_MINUTE_CHARACTERS];
char strHour[PLT_HOUR_MINUTE_CHARACTERS] = {'\0'};
char strMinutes[PLT_HOUR_MINUTE_CHARACTERS] = {'\0'};;
uint8_t* strPltBuffer;
if (SystemLoadFile(strPath) == false)
@ -112,7 +112,6 @@ bool PltParserLoadFile(const char* strPath, TYPE_FLIGHT_DATA* const ptrFlightDat
if (i == PLT_COLON_POSITION)
{
j = 0;
buffer = strtok(NULL,"\n");
continue;
}
else if (i < PLT_COLON_POSITION)
@ -126,17 +125,14 @@ bool PltParserLoadFile(const char* strPath, TYPE_FLIGHT_DATA* const ptrFlightDat
}
GameSetTime((uint8_t)atoi(strHour),(uint8_t)atoi(strMinutes) );
Serial_printf("Game time set to %.2d:%.2d.\n",(uint8_t)atoi(strHour),(uint8_t)atoi(strMinutes) );
}
else
{
typedef enum t_lineType
enum
{
MESSAGE_INFO,
AIRCRAFT_DATA
}TYPE_LINE;
TYPE_LINE tLine = AIRCRAFT_DATA; // Default value
} tLine = AIRCRAFT_DATA; // Default value
TYPE_MESSAGE_DATA tMessage = {0};
// File header (initial game time) has already been read

View File

@ -1,11 +1,11 @@
/* *************************************
* Includes
* Includes
* *************************************/
#include "Serial.h"
/* *************************************
* Defines
* Defines
* *************************************/
#define SERIAL_BAUDRATE 115200
@ -15,7 +15,7 @@
#define SERIAL_PRINTF_INTERNAL_BUFFER_SIZE 256
/* **************************************
* Structs and enums *
* Structs and enums *
* *************************************/
typedef enum
@ -26,21 +26,29 @@ typedef enum
}SERIAL_STATE;
/* *************************************
* Local Variables
* Local Variables
* *************************************/
static volatile SERIAL_STATE SerialState;
static volatile bool serial_busy;
static void ISR_Serial(void);
/* *************************************
* Local Prototypes
* Local Prototypes
* *************************************/
void SerialInit(void)
{
SetSIOHandler(&ISR_Serial);
SIOStart(115200);
}
static void ISR_Serial(void)
{
Serial_printf("SIO\n");
}
bool SerialRead(uint8_t* ptrArray, size_t nBytes)
{
if (nBytes == 0)
@ -100,10 +108,10 @@ void Serial_printf(const char* str, ...)
va_start(ap, str);
result = vsnprintf( internal_buffer,
SERIAL_PRINTF_INTERNAL_BUFFER_SIZE,
str,
ap );
result = vsnprintf( internal_buffer,
SERIAL_PRINTF_INTERNAL_BUFFER_SIZE,
str,
ap );
SerialWrite(internal_buffer, result);
}

View File

@ -86,6 +86,9 @@ void SystemInit(void)
PSX_InitEx(PSX_INIT_SAVESTATE | PSX_INIT_CD);
#endif // SERIAL_INTERFACE
// SIO init
SerialInit();
//Graphics init
GsInit();
//Clear VRAM

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View File

@ -16,4 +16,4 @@ DEPARTURE;PHX1001;100;00:25;21;240
DEPARTURE;PHX1002;200;01:00;19;240
DEPARTURE;PHX1003;200;01:30;21;240
DEPARTURE;PHX1004;200;02:00;19;240
DEPARTURE;PHX1004;200;03:00;21;240
DEPARTURE;PHX1004;200;03:00;21;240

Binary file not shown.

Binary file not shown.

Binary file not shown.