Hola compañeros, aquí tengo una duda, mejor dicho, necesito ayuda con esta rutina.
La rutina es de como insertar mugshot via ASM, creo que muchos han visto esta rutina, esta rondando por pokeco.
El problema es que a la hora de crear la tabla y cambiar todos los campos de la rutina, al momento de compilarla en el Thum me da error y no aparece el archivo .bin de la rutina.
Alguien me podría decir que hago mal :(
Aquí esta la rutina sin compilar y sin cambiar los campos:
.align 2
.thumb
@/* VAR 0x4500 = SPRITE NUMBER IN TABLE */@
@/* VAR 0x4501 = LEFT OR RIGHT SIDE?*/@
@/* VAR 0x4502 = SPRITE SLOT IN SCRIPT*/@
@/* TABLE: [IMAGE][PALETTE][PAL#][00 00 00]*/@
Y aquí esta la rutina con todos los campos cambiados, o sea donde dice [tabla] y donde dice [offset_of_this_code]
.align 2
.thumb
@/* VAR 0x4500 = SPRITE NUMBER IN TABLE */@
@/* VAR 0x4501 = LEFT OR RIGHT SIDE?*/@
@/* VAR 0x4502 = SPRITE SLOT IN SCRIPT*/@
@/* TABLE: [IMAGE][PALETTE][PAL#][00 00 00]*/@
Wat.
EDIT: Ok, vamos a decirlo un poco mejor:
Eso es completamente incorrecto (el número es obviamente demasiado grande).
¿De dónde has sacado la rutina, dices?
Iniciado por cosarara97
Wat.
EDIT: Ok, vamos a decirlo un poco mejor:
Eso es completamente incorrecto (el número es obviamente demasiado grande).
¿De dónde has sacado la rutina, dices?
Esa es la tabla, mira aquí un fracmento de del tutorial:
''Digamos que tengo una imagen en 0xABCDEF y una paleta en 0x123456
Dividí las compensaciones hasta en 3 partes: [AB] [CD] [EF] / / [12] [34] [56]
Entonces cambio el primer y último bloque: [EF] [CD] [AB] / / [56] [34] [12]
Finalmente añadimos 08 detrás de él: EF CD AB 08 / / 56 34 12 08
Por ejemplo, mi tabla podría tener este aspecto:
Código:
EFCDAB08 56341208 0E 000000
[Imagen] [Paleta] [pal #] [relleno]
Ahora repite que por tanto los mugshots como desee.
Recuerde: La primera entrada de la tabla es 0x0 INDEX.
La segunda entrada es 0x1 INDEX y así sucesivamente.
Esta vez se pone fácil:
Código:
. TABLA equ, 0x08 (MESA)
Reemplazar (MESA) con su tabla de correctores en la ROM.
Y la última cosa que usted debe hacer está cambiando todo [OFFSET_OF_THIS_CODE]
al desplazamiento que se va a insertar el código ASM.
Si usted quiere que la inserta a 0x800000 por ejemplo,
reemplazar todos [OFFSET_OF_THIS_CODE] con 800.000.''
''Digamos que tengo una imagen en 0xABCDEF y una paleta en 0x123456
Dividí las compensaciones hasta en 3 partes: [AB] [CD] [EF] / / [12] [34] [56]
Entonces cambio el primer y último bloque: [EF] [CD] [AB] / / [56] [34] [12]
Finalmente añadimos 08 detrás de él: EF CD AB 08 / / 56 34 12 08
Por ejemplo, mi tabla podría tener este aspecto:
Código:
EFCDAB08 56341208 0E 000000
[Imagen] [Paleta] [pal #] [relleno]
Ahora repite que por tanto los mugshots como desee.
Recuerde: La primera entrada de la tabla es 0x0 INDEX.
La segunda entrada es 0x1 INDEX y así sucesivamente.
Esta vez se pone fácil:
Código:
. TABLA equ, 0x08 (MESA)
Reemplazar (MESA) con su tabla de correctores en la ROM.
Y la última cosa que usted debe hacer está cambiando todo [OFFSET_OF_THIS_CODE]
al desplazamiento que se va a insertar el código ASM.
Si usted quiere que la inserta a 0x800000 por ejemplo,
reemplazar todos [OFFSET_OF_THIS_CODE] con 800.000.''
Yay, traducción automática! Otra vez danos un link please.
Ya sé lo que has hecho, lo que pasa es que en el código no tenías que poner los datos de la tabla en forma de número, si no que tenías que poner la dirección del sitio en el que has puesto dicha tabla.
De todos modos no acabo de ver muy bien cómo funcionaría esto, por que si no tengo mal entendido no puedes usar ldr con una dirección que esté lejos del código.
Iniciado por cosarara97
Yay, traducción automática! Otra vez danos un link please.
Ya sé lo que has hecho, lo que pasa es que en el código no tenías que poner los datos de la tabla en forma de número, si no que tenías que poner la dirección del sitio en el que has puesto dicha tabla.
De todos modos no acabo de ver muy bien cómo funcionaría esto, por que si no tengo mal entendido no puedes usar ldr con una dirección que esté lejos del código.
Entonces dices que debo de insertar la tabla con el HxD, y en la dirección que la ponga, esa es la dirección que tengo que poner en la tabla...
Iniciado por Sceptile9
Entonces dices que debo de insertar la tabla con el HxD, y en la dirección que la ponga, esa es la dirección que tengo que poner en la tabla...
A decir verdad, tiene mucho sentido, lo probaré.
Gracias por responder:D
Tu mismo lo has dicho. Lo que tienes que poner en [TABLE] es el offset donde está la tabla. Para crear la tabla ve a un offset vacio en el HxD, que tengas bastantes FF (cuantos más tenga, más mugshots puedes meter). Y en ese offset, dentro del HxD, tienes que poner cada mugshots con la estructuraque indica en el tutorial.
Iniciado por cosarara97
Yay, traducción automática! Otra vez danos un link please.
Ya sé lo que has hecho, lo que pasa es que en el código no tenías que poner los datos de la tabla en forma de número, si no que tenías que poner la dirección del sitio en el que has puesto dicha tabla.
De todos modos no acabo de ver muy bien cómo funcionaría esto, por que si no tengo mal entendido no puedes usar ldr con una dirección que esté lejos del código.
Iniciado por Jotika
Tu mismo lo has dicho. Lo que tienes que poner en [TABLE] es el offset donde está la tabla. Para crear la tabla ve a un offset vacio en el HxD, que tengas bastantes FF (cuantos más tenga, más mugshots puedes meter). Y en ese offset, dentro del HxD, tienes que poner cada mugshots con la estructuraque indica en el tutorial.