Quelques remarques en vrac:
Code:
INC_gamelevel
LDA gamelevel ;|
INCA ;| inc level +1
STA gamelevel ;|
Humm je me demande ici si un INC gamelevel + LDA gamelevel ne serait pas plus rapide. Il faudrait compter les cycles. En tout cas ce serait plus court d'au moins 1 octet (ca peut être plus utile que la vitesse en ce point du code.)
Code:
setLevelsParams
CMPA #16 ;| if gamelevel < 16
BLT setLevelParam ;| set params from FCB
BGE setLevelMaxiParam ;| else params from last FCB for all gamelevel >= 16
setLevelParam
Ici BLT et BGE sont exclusifs l'un de l'autre. Tu peux donc virer le BLT setLevelParam car on y va forcément si on ne prend pas le BGE.
En outre ce code ressemble à une saturation à 16. Moi perso je le ferais ainsi ce qui a le mérite d'être plus court en fusionnant setLevelParam et setLevelMaxiParam:
Code:
LDA #16
CMPA gamelevel
BGE setLevelParam
LDA gamelevel
setLevelParam:
..
Poursuivons...
Code:
*; set ghost scatter time for level
LDX #GHOST_DATAS_SCATTERTIME-1
LDA gamelevel ;// A est deja connu ? pas besoin alors ! <--------
ouaip.
Code:
LDB A,X
STB ghost_scatter_delay
*; set ghost ia bypass move interval for level
LDX #GHOST_DATAS_IA_INTERVAL-1
LDA gamelevel ;// A est deja connu ? pas besoin alors ! <--------
ouaip. C'est l'optim #1: ne pas répéter les choses qu'on a déjà fait.
Bon la suite c'est pareil.