FR | ASM | Rutina JPAN Save Block Hack


Like Tree8Gracias
  • 7 Post By Dr. Seuss
  • 1 Post By Dr. Seuss
Respuesta
 
Herramientas Desplegado
  #1  
09/08/2019
Predeterminado FR | ASM | Rutina JPAN Save Block Hack
Bueno, quizás muchos ya saben de que trata esto, pero para quienes no, les presento la rutina para aplicar el Save Block hack de JPAN, el cual tiene muchísimos usos y se requiere para varios sistemas.

Para resumirlo, lo que hace esta rutina es modificar la manera en que se organizan ciertos datos en la memoria RAM, a modo de hacer que ciertos bloques de memoria queden libres para usar y podamos darles usos a esos bloques depara nuestra conveniencia. Los bloques de memoria liberada se encuentran ubicados en 0x203C1C8, 0x203C420 y 0x203CFC0.

La mayoría aplica esta rutina mediante un parche que ronda en internet (Que ocupa la offset 0x8A00000, que en mi caso la tengo ocupada) o deja que la misma la aplique G3HS o PGE. Dichas rutinas se aplican si expandimos la dex (Cosa que no pienso hacer) y la de PGE por algún motivo buguea mi hack. Esta opción hace que la insertes a mano tú mismo y sepas donde la vas a poner. Además de ser más eficiente compilar desde el código fuente.

Y finalmente, la rutina.
Código:
.thumb
.global JPAN_Save_Block_Recycle
.equ rom, 0x8000000
.equ offset, 0xFFFFFF  @ModIFICA A LA OFFSET DONDE INSERTARÁS ESTA RUTINA

.org 0xD991E, 0xFF
	bx r7

.org 0xD995C, 0xFF
.word Recycle_2 + rom + 1

.org 0xD9EDC, 0xFF
	ldr r0, .Pointer1
	bx r0
.align 2
.Pointer1: .word Recycle_1 + rom + 1

.org 0x3FEC9A, 0xFF
.byte 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xE0, 0x1F, 0xF0, 0x0F, 0xD0, 0x2F, 0x98, 0xD, 0x0, 0x0, 0xF0, 0x0F, 0xF0, 0xF, 0xF0, 0xF, 0xE0, 0x1F, 0xF0, 0xF, 0xD0, 0x2F, 0xF0, 0xF, 0xC0, 0x3F, 0xF0, 0xF, 0xB0, 0x4F, 0xF0, 0xF, 0xA0, 0x5F, 0xF0, 0xF, 0x90, 0x6F, 0xF0, 0xF, 0x80, 0x7F, 0x50, 0x4

.org offset, 0xFF
Recycle_1:
	ldr r1, [r4]
	mov r3, #0xFF
	lsl r3, #0x4
	add r3, r1
	ldrh r0, [r3, #0x4]
	cmp r0, #0x0
	beq Size1
	cmp r0, #0x4
	beq Size2
	cmp r0, #0xD
	beq Size3

BigLoop:
	cmp r5, #0xD
	ble Return
	mov r0, #0x1
	pop {r3}
	mov r8, r3
	pop {r4-r7,pc}

Size1:
	mov r1, #0xCC
	ldr r2, .Loc1
	b SmallLoop

Size2:
	mov r1, #0x96
	lsl r1, #0x2
	ldr r2, .Loc2
	b SmallLoop

Size3:
	mov r1, #0xBA
	lsl r1, #0x4
	ldr r2, .Loc3

SmallLoop:
	sub r3, #0x4
	ldr r0, [r3]
	str r0, [r2]
	sub r2, #0x4
	sub r1, #0x4
	cmp r1, #0x0
	bne SmallLoop
	b BigLoop

.align 2
.Loc1: .word 0x203C1C8
.Loc2: .word 0x203C420
.Loc3: .word 0x203CFC0

Return:
	ldr r0, .Return
	bx r0

.align 2
.Return: .word 0x80D9E71
.word 0xFFFFFFFF

Recycle_2:
	mov r7, #0xFF
	lsl r7, #0x4
	add r7, r1, r7
	strh r0, [r7, #0x6]
	ldrh r6, [r7, #0x4]
	cmp r6, #0x0
	beq Size1_2
	cmp r6, #0x4
	beq Size2_2
	cmp r6, #0xD
	beq Size3_2
	lsl r0, #0x0

Return_2:
	ldr r0, .Return2
	bx r0

.align 2
.Return2: .word 0x80D9923

Size1_2:
	mov r3, #0xCC
	ldr r2, .Loc1_2
	b SmallLoop_2

Size2_2:
	mov r3, #0x96
	lsl r3, #0x2
	ldr r2, .Loc2_2
	b SmallLoop_2

Size3_2:
	mov r3, #0xBA
	lsl r3, #0x4
	ldr r2, .Loc3_2

SmallLoop_2:
	sub r7, #0x4
	ldr r0, [r2]
	str r0, [r7]
	sub r2, #0x4
	sub r3, #0x4
	cmp r3, #0x0
	bne SmallLoop_2
	b Return_2

.align 2
.Loc1_2: .word 0x203C1C8
.Loc2_2: .word 0x203C420
.Loc3_2: .word 0x203CFC0
Al compilar la rutina, solo deben abiri el archivo .bin generado y copiar los datos de las direcciones de los hooks, que se encuentan en 0x80D991E, 0x80D995C, 0x80D9EDC 0x83FEC9A. Tambien debes copiar los bytes ubicados en donde indicaste que insertarías la rutina.

Ten en cuenta que es muy probable que tras aplicar esta rutina debas de inicaiar una nueva partida, debidoa que muchos bytes en la RAM son modificados, haciendo que la partida vieja se corrompa.

Los créditos van para JPAN por la rutina original y jiangzhengwnjz ya que fue quien me facilitó por Discord el código fuente de la rutina que parecía perdida y nadie la tenía, además del parche.
Cuando el Dragón Verde y Negro se convierta en el terrible gigante y desate su furia contenida contra todo ser viviente y conquiste el cielo... Vida y Muerte, Cielo y Tierra, Existencia y la Nada, Pasado y Futuro... Las flamas convertirán toda la vida en ruido y cubrirán el mundo. Aunque muchas almas vagarán, buscando un eterno descanso, ellas serán comida para la furia del gigante y consumidas por el Ragnarök, para dar inicio a una era de caos... Los mundos de Anctgard y Nezgard se aplastaran uno con otro, junto a sus respectivas penas... No existirá ni un solo rayo de luz o algún resquicio de la oscuridad. Solo el ruido inerte del La Sinfonía de un Final Destinado...

Última edición por Dr. Seuss; 09/08/2019 a las 19:35
  #2  
10/08/2019
Predeterminado Re: FR | ASM | Rutina JPAN Save Block Hack
Buen aporte, pero tengo una duda
Yo había conseguido la rutina hace bastante tiempo, pero se ve un poco diferente a la que aportas aquí, igual recuerdo que tenias que modificar la rutina del guardado para que no hubiera bugs, con esta rutina se soluciona eso o es necesario igual modificar dicha rutina??
Nuevamente sin firma.

mis proyectos



  #3  
10/08/2019
Predeterminado Respuesta: Re: FR | ASM | Rutina JPAN Save Block Hack
Dicho por javcdark Ver mensaje
Buen aporte, pero tengo una duda
Yo había conseguido la rutina hace bastante tiempo, pero se ve un poco diferente a la que aportas aquí, igual recuerdo que tenias que modificar la rutina del guardado para que no hubiera bugs, con esta rutina se soluciona eso o es necesario igual modificar dicha rutina??
Pues esta rutina está hecha para que las 2 rutinas que modifican los bloques de la RAM y el guardado se ensamblen en una sola. Si compilas este código encontrarás los dos hooks de dichas rutinas c:
Gracias: A3rdnaRH
Cuando el Dragón Verde y Negro se convierta en el terrible gigante y desate su furia contenida contra todo ser viviente y conquiste el cielo... Vida y Muerte, Cielo y Tierra, Existencia y la Nada, Pasado y Futuro... Las flamas convertirán toda la vida en ruido y cubrirán el mundo. Aunque muchas almas vagarán, buscando un eterno descanso, ellas serán comida para la furia del gigante y consumidas por el Ragnarök, para dar inicio a una era de caos... Los mundos de Anctgard y Nezgard se aplastaran uno con otro, junto a sus respectivas penas... No existirá ni un solo rayo de luz o algún resquicio de la oscuridad. Solo el ruido inerte del La Sinfonía de un Final Destinado...
Respuesta

Herramientas
Desplegado

Permisos para publicar mensajes
No puedes crear nuevos temas
No puedes responder mensajes
No puedes subir archivos adjuntos
No puedes editar tus mensajes

Los BB code están Activado
Los Emoticones están Activado
El código [IMG] está Activado
El Código HTML está Desactivado
Trackbacks are Activado
Pingbacks are Activado
Refbacks are Desactivado



Extra
Estilo clásico
La franja horaria es GMT +1. Ahora son las 07:03.