Despues de 9 meses de haberte preguntado como repuntear la tabla de ataques y que ninguno de los dos supo, aqui traigo la respuesta gracias a mis clases de 5 minutos de ASM con Crystal_ y Miksy91, asi por lo menos tenemos 3 ataques extras para usar:No es posible crear más de 255 ataques sin modificar con ASM la forma en que el juego carga los ataques, haciendo una rutina que diferencie entre dos tablas distintas con 256 valores cada una. Para hacer algo así hay que estar bastante experimentado en ASM, por lo que si no eres Koolboyman o Tauwasser y no quieres pasarte meses buscando la manera de hacerlo, es imposible.
Eso sí, puedes repuntear la tabla para tener 3 ataques extra (0xFC, 0xFD y 0xFE) pero me da a mí que no merece la pena.
Saludos ;D
Edito: La informacion anterior esta incompleta, el juego cuenta con 5 rutinas que hacen referencia a la tabla de movientos. De momento solo se que las primeras dos corresponde a los pokemon del rival en batalla y a los nuestros en la party o en batalla. De cualquier forma les dejo las direcciones:2-Byte Pointer Pokemon Gold:
0x37f79
Bank Byte Pokemon Gold:
0x37F82
No deberia ser tan complicado. Esto es lo que tenemos:Lo de la rutina <Menor que, mayor que> es algo complicado no creees?
#org 3A79
push bc
push de
push hl
ld a,(FF00+9F)
push af
ld a,14
rst 10 ; cargamos la bank 14 en ram
dec a ; numero-1
ld a,(CE60) ; tomamos el numero del pokemon
cp a,FD ; si es un huevo...
jr z,Label3A9E ; ...se maneja de forma diferente
ld bc,0020 ; logitud de los base stats data de cada pokemon
ld hl,5B0B ; puntero
call Label31A3 ; rutina que se encarga de llevarnos a la posicion correcta (añade 0020 a 5B0B tantas veces como corresponda)
ld de,D120 ; a partir de aqui tan solo se trata de cargar el base stats data que ya hemos tomado en las direcciones de RAM que corresponda
ld bc,0020
call Label311A
jr Label3AB3
Label3A9E:
ld de,7A83
ld b,55
ld hl,D131
ld (hl),b
ld hl,D132
ld (hl),e
inc hl
ld (hl),d
inc hl
ld (hl),e
inc hl
ld (hl),d
jr Label3AB3
Label3AB3:
ld a,(CE60)
ld (D120),a
pop af
rst 10
pop hl
pop de
pop bc
ret
#org 10
Label10:
ld (FF00+9F),a
ld (2000),a
ret
#org 31A3
Label31A3: ; decrementar numero del pokemon y hacer loop mientras sea distinto de 0
and a,a
ret z ; bulbasaur
Label31A5:
add hl,bc
dec a
jr nz,Label31A5
ret
#org 311A
Label311A: ; cargar byte a byte en la RAM hasta que esten todos
inc b
inc c
jr Label3121
Label311E:
ldi a,(hl)
ld (de),a
inc de
Label3121:
dec c
jr nz,Label311E
dec b
jr nz,Label311E
ret
#org 3A79
(...)
ld a,(CE60) ; tomamos el numero del pokemon
jp ComprobarMasDe251 ; originalmente cp a,FD
nop
nop ; originalmente jr z,Label3A9E
; ningun cambio en la rutina original a partir de aqui
MenorIgual251:
ld bc,0020 ; longitud de los base stats data de cada pokemon
ld hl,5B0B ; puntero
call Label31A3 ; rutina que se encarga de llevarnos a la posicion correcta
Todos:
ld de,D120 ; cargar en ram donde corresponda
ld bc,0020
(...)
#org 53B15 ; ya tenemos cargada la rom bank 14 ($50000-$54000) en ram $4000-$7FFF
ComprobarMasDe251:
cp a,FD ;
jp z,Label3A9E ; primero ponemos el salto si es huevo que habiamos eliminado para hacer hueco al jump
cp a,FC ; si no es huevo, comparar con numero 252
jp c,MenorIgual251 ; si es menor que 252, hacemos como tal y como estaba la rutina original
jr nz,NoEs252 ; si llegados aqui no es numero 252 (FC), entonces es 254
ld hl,7C00 ; stats pokemon 252
NoEs252:
ld hl,7C20 ; stats pokemon 254
jp,Todos ; en caso de ser 252/254, ya tan solo falta cargar en la ram
Kurisutaru♪;223327 dijo:Lo mas seguro es que estes usando una flag ya activada, por lo cual no vuelve a pasar, intenta ponerle flags de eventos poco comunes, como la 0x64 0x65, ademas si hay un checkbit obviamente debe haber un setbit, asi solo el rom esta checkeando el estado de la flag, pero no la estas activando.
Lo de llenar en jobtomap copia los mismos datos de otro npc, pero donde dice script pon el 2 byte pointer del script nuevo, pero invertido.
Intenta eso que digo
1. Mira el edit para ver algo como va el scriptgracias por el comentario revisare el comando , respecto al dato que dices scrip ya estan los 2 byts invertidos , respecto si copio a los otros NPC ya vi de los demas , pero los demas tiene diferentes , me refiero cada scrip es distinto , y nose cual podria ser ponerle al nuevo , es por eso que pregunto
0 - Down
1 - Up
2 - Left
4 - Right
5 - Left/Right
6 - Down
7 - Up
8 - Left
9 - Right
10 - Look Around