Registrarse

Duda Parche Voicegroup Todo-en-Uno

Estado
Cerrado para nuevas respuestas.

dbzdark88

Maestro de las Waifus!
Buenas gente

mi duda es la siguiente,en el tuturial de http://whackahack.com/foro/t-28389/parche-fr-r-e-voicegroup-todo-en-uno del Usuario @~ V e c t o r
el parche ocupa a partir de la dirección 0xA00000 (que tengo ocupadisima)

quisiera que me explicáran por favor,de que manera trasladar/repuntear el parche a una dirección a partir de la 00EE04C0

Rom base FR 1.0 (32MB) (Base Versekr Dark)

de antemano muchisimas gracias y disculpen los inconvenientes ^^

Saludos!

--------------------------------

EDIT: Invóco a @Versekr Dark para participár en la duda,ya que además es su base,y podría saber que problema hay :(
 
Última edición:

Gold

Porrero a tiempo parcial
Miembro insignia
Debes exportar en sappy los 128 instrumentos del voicegroup y crear un nuevo voicegeoup en la dirección que quieras, importando a mano los instrumentos que exportaste
 

Kaiser de Emperana

Called in hand
A ver, nunca me puse a ver bien como son los voicegroups, pero tengo entendido que son un montón de punteros que apuntan a los instrumentos (con algunas configuraciones más, pero lo único que te importaría a vos son los punteros).
Yo diría que sería bastante fácil hacer un mini programa que cambie los punteros de los instrumentos a las direcciones que quieras. Lo que llevaría media hora en lugar de semanas como lo que dice Verserk...
 

dbzdark88

Maestro de las Waifus!
Desde ya agradezco muchisimo las respuestas ^^

bueno,soy muy novato,especialmente en las Midis mi principal problema es que en mi Rom las Midis suenan con un sonido horrible
(un pip o algo saturado y a veces sin drums),al oir sobre este parche,seria una pequeña ayuda con respecto a mi problema de Midis.

ya sé,me dirán,pero estás acomodando mal los instrumentos o no sabes hacerlo.

bueno,dos cosas a continuacion

1-vi tutoriales respecto a inserción de Midis,y me esforzé por aprenderlo lo mejor que pude,pero aún así,me sucede ese problema de los ruidos "extraños" o sin Drums.

2-Recurrí a un experimentado en el área Midis, el Usuario @FraynSebas
lo que ocurrió,fue que,el mismo loopeo y acomodo los instrumentos,y nuevamente el problema siguió persistiendo (ya que además él,se maneja mejor con los proyectos que tienen aplicado el parche de "All Intruments".

es por este motívo,que expongo está duda respecto al parche,ya que la música así como otras áreas,son fundamentales para un desarrollo óptimo y o como complemento,y lamentablemente mi Rom tiene ocupadisimas esas direcciones,solo está libre a partir de la dirección que mencione en la duda.
 

kakarotto

Leyenda de WaH
Queria aportarte mi grano de arena ya que yo tsmbien estoy indagando mucho en el tema musical. Yo tambien tengo el parche de todo en uno y si bien te ahorra cambiar instrumentos, no lo recomiendo para una version final de midi, si no para testearla. Ten en cuenta que:
1) Si aun así quieres importar una midi en esta voicegroup el instrumento del drum es el 128.

2) Hasta donde yo he conseguido, solo es posible reproducir dos directsound a la vez,depende del instrumento que cojas sera o directsound o multisample (me gustaria que alguien aclarase este tema)

3) Es MUY IMPORTANTE la calidad del midi
 

Kaiser de Emperana

Called in hand
Moví los datos del parche a 0xee0500
Parche ups

Ahora el voicegroup esta en el offset 0x101115c

Yo no hice absolutamente nada del parche, sólo repunteé los instrumentos,todos los créditos están en los mensajes anteriores de este tema.

Y por si alguien lo necesita en otro offset o le interesa saber como lo hice, acá está el script de python que usé:

Código:
VOICEGROUP_OFFSET = 0xb30c5c

PATCH_DATA_START = 0xa00000
PATCH_DATA_END = 0xb66fa9

patched_file = 'patched.gba'
to_patch_file = 'rom.gba'

MOVE_TO_ADDRESS = 0xee0500


def get_actual_offset(rom_offsset):
    return rom_offsset - 0x8000000


def is_part_of_patch(offset):
    offset = get_actual_offset(offset)
    return PATCH_DATA_START <= offset < PATCH_DATA_END


def get_new_address(offset):
    return (MOVE_TO_ADDRESS + (offset - PATCH_DATA_START)).to_bytes(4, 'little')


with open(patched_file, 'rb') as f:
    f.seek(PATCH_DATA_START)
    patch_data = bytearray(f.read(PATCH_DATA_END - PATCH_DATA_START))

x = VOICEGROUP_OFFSET - PATCH_DATA_START
voicegroup_data = patch_data[x:x + 0x600]

new_voicegroup_data = b''
for i in range(128):
    instrument_data = voicegroup_data[i * 0xc:(i + 1) * 0xc]
    pointer1 = int.from_bytes(instrument_data[4:8], 'little')
    pointer2 = int.from_bytes(instrument_data[8:12], 'little')

    if is_part_of_patch(pointer1):
        instrument_data[4:8] = get_new_address(pointer1)
        second_pointer_address = get_actual_offset(pointer1) - PATCH_DATA_START + 4
        second_pointer = int.from_bytes(patch_data[second_pointer_address:second_pointer_address + 4],
                                        'little')
        if is_part_of_patch(second_pointer):
            patch_data[second_pointer_address:second_pointer_address + 4] = get_new_address(second_pointer)
    if is_part_of_patch(pointer2):
        instrument_data[8:12] = get_new_address(pointer2)
        second_pointer_address = get_actual_offset(pointer2) - PATCH_DATA_START + 4
        second_pointer = int.from_bytes(patch_data[second_pointer_address:second_pointer_address + 4],
                                        'little')
        if is_part_of_patch(second_pointer):
            patch_data[second_pointer_address:second_pointer_address + 4] = get_new_address(second_pointer)

    new_voicegroup_data += instrument_data

patch_data[x:x + 0x600] = new_voicegroup_data

with open(to_patch_file, 'rb+') as f:
    f.seek(MOVE_TO_ADDRESS)
    f.write(patch_data)

print('New voicegroup offset:', hex(MOVE_TO_ADDRESS + x))
 
Última edición:

dbzdark88

Maestro de las Waifus!
Lamentablemente,Tsukoyomi da error al intentar aplicár el parche,y con Nintendolord (omitiéndo las advertencias) se puede aplicar el parche.

procedo a checar la Rom ya parchada con HxD y todos los datos están correctos,pero al insertár la Midi ya loopeada y demás,se oye un "SHHHHHHHHHSHRRRRRSRHHHHHHHH" y luego el cry normal del PKM (o sea,insertando la Midi en la intro)

Dato importánte: sin el parche,se oían feas las midis,con ruidos extraños y "bips",pero mas o menos se entendía algo de la "cierta" melodía.
 
Última edición:

Gold

Porrero a tiempo parcial
Miembro insignia
Respuesta: Re: Duda Parche Voicegroup Todo-en-Uno

Queria aportarte mi grano de arena ya que yo tsmbien estoy indagando mucho en el tema musical. Yo tambien tengo el parche de todo en uno y si bien te ahorra cambiar instrumentos, no lo recomiendo para una version final de midi, si no para testearla. Ten en cuenta que:
1) Si aun así quieres importar una midi en esta voicegroup el instrumento del drum es el 128.

2) Hasta donde yo he conseguido, solo es posible reproducir dos directsound a la vez,depende del instrumento que cojas sera o directsound o multisample (me gustaria que alguien aclarase este tema)

3) Es MUY IMPORTANTE la calidad del midi
No, por defecto FR y Emerald solo reproducen 5 directracks a la vez, mas navegando en el offset que define la cantidad de voicegroups se puede aumentar a la cantidad real que el hardware de GBA soporta, osea 13 directracks
 

kakarotto

Leyenda de WaH
Estoy hablando de directsound NO DIRECTRACKS. Porque al tercer directsound que metas los instrumentos suenan entrecortados. Eso no ocurre si hay dos directsound y un multisample por ejemplo
 

dbzdark88

Maestro de las Waifus!
Genial!,muchisimas gracias a todos por su tiempo.


EDIT: TEMA RESUELTO ^^
 
Última edición:
Estado
Cerrado para nuevas respuestas.
Arriba