Creo que la cosa no deberia ser asi.
Convertir las menciones a 9 bits implica muchismo tiempo y esfuerzo, eso lo comprendio KBC y supongo que RED. Lo mas facil es lo que Koolboyman plateo, usar el ultimo bit del nivel de cada pokemon para indicar a que tabla pertenece, de esta manera cubres la gran mayoria de las tablas, como la de pokemon salvajes y entrendores/gym leaders, asi incluso la edicion de cada pokemon solo implicaria sumarle 128 niveles si se tratase de un pokemon por encima del +257.
En lo que tu preparas el repositorio yo puedo empezar a investigar cuantas rutinas son las que hay que modificar.
Por cierto, le pedi a RED si nos facilitaba una copia de su trabajo para usarlo de comparativa, espero nos sirva.
Era solo una forma de hablar. El noveno bit es necesario venga de donde venga. Es algo asi lo que he pensado, pero es mas complejo de lo que piensas. Hay varias direcciones RAM u estructuras que pueden albergar el numero de la especie del pokemon con que se esta tratando.
Estas son las relaciones a las que he llegado hasta ahora:
CurPartySpecies <-> CurPartyLevel MSB
(Temp)EnemyMonSpecies <-> EnemyMonLevel(?)
(Temp)BattleMonSpecies <-> BattleMonLevel(?)
Box struct: Species <-> Level MSB
Battle struct: Species <-> Level MSB
CurSpecies <-> BaseStatsTableNo LSB
Es decir, cada vez que species se carga en curspecies, cargar 0 o 1 en c840 en funcion del bit mas significativo del nivel que corresponda. He modificado la rutina GetBaseLevel para que lea los base stats de una u otra tabla segun ese bit:
https://github.com/xCrystal/pokecrystal511/blob/master/home.asm#L1768
Esto seria un ejemplo de como llamar al nuevo GetBaseLevel
Functiond906: ; d906
ld e, l
ld d, h
push hl
ld a, [CurPartySpecies]
ld [CurSpecies], a
call GetBaseData
becomes:
Functiond906: ; d906
ld e, l
ld d, h
push hl
ld a, [CurPartySpecies]
ld [CurSpecies], a
ld a, [CurPartyLevel]
and 1
ld , a
call GetBaseData
Puedes empezar a contribuir en pokecrystal511.asm desde ya. Tan solo necesitas crear una cuenta en github y decirme tu nick para hacerte colaborador.