Índice de pequeñas modificaciones

Avisos


Like Tree15Gracias
Respuesta
 
Herramientas Desplegado
  #1  
09/03/2019
Predeterminado Respuesta: Índice de pequeñas modificaciones
Post original creado por Avara en PokéCommunity, todos los créditos van dirigidos a la autora. Adaptado y traído a WaH para vuestro uso y disfrute por el Equipo de traducción. Podéis publicar aportes vosotros también, e iré actualizando el índice. Importante mencionar a otros colaboradores del post como DizzyEgg y Lunos.

~ Disturbo
Índice de pequeñas modificaciones para
pokeemerald y pokeruby






Este hilo tiene el propósito de ser una forma en la que organizar pequeños aportes que no sean lo bastante grandes como para necesitar un post propio. Se recogerán las instrucciones necesarias para aplicar estas modificaciones y se creará una lista en este mismo post para faciltar la búsqueda de algo específico.

Si conoces o piensas que alguna pequeña modificación puede ser añadida a esta lista, deja un comentario y se actualizará el índice. Con un poco de suerte, esto hará que más rom hackers se pasen a las decomps






¡Atención lector! Debido a la carga de trabajo de segundo de bachillerato y la gran cantidad de aportes que están teniendo lugar en el mundillo de la decompilación (al que estoy dando bastante preferencia), no puedo mantener este índice al día. Os insto a formar parte del equipo de traducción, cualquier pequeño aporte que hagais es bienvenido, y lo único que se espera de vosotros es que sepáis el lenguaje que estais traduciendo, no tenéis que traducir nada obligatoriamente ni nada por el estilo. ¡Gracias por leer esto!

Última edición por Disturbo; 04/05/2019 a las 10:16
  #2  
09/03/2019
Predeterminado Respuesta: Índice de pequeñas modificaciones
Editar los items del almacenados en el PC original
pokeemerald & pokeruby






Abrimos "src/player_pc.c" y vamos a la siguiente struct. Puedes usar Ctrl+F "POTION" para localizarla.
Código:
static const struct ItemSlot gNewPCItems[]=
{
	{ ITEM_POTION, 1 },
	{ ITEM_NONE, 0 }
};

El código aquí es bastante intuitivo, solo debemos asegurarnos de no eliminar o modificar { ITEM_NONE, 0 }. Por ejemplo:
Código:
static const struct ItemSlot gNewPCItems[]=
{
	{ ITEM_SITRUS_BERRY, 5 },
	{ ITEM_LUM_BERRY, 3 },
	{ ITEM_NONE, 0 }
};

Esto resultaría en el siguiente PC al comienzo del juego:





Última edición por Disturbo; 30/03/2019 a las 00:02
  #3  
09/03/2019
Predeterminado Respuesta: Índice de pequeñas modificaciones
Cambiar los Pokémon inicales original
pokeemerald & pokeruby






Abrimos "src/starter_choose.c" y vamos a la siguiente sección. Puedes usar Ctrl+F "TREECKO" para localizarlo.
Código:
static const u16 sStarterMon[STARTER_MON_COUNT] =
{
	SPECIES_TREECKO,
	SPECIES TORCHIC,
	SPECIES_MUDKIP,
}

Una vez más, el cambio es sencillo. Simplemente cambia los "SPECIES_" al Pokémon que quieras. Por ejemplo:
Código:
static const u16 sStarterMon[STARTER_MON_COUNT] =
{
	SPECIES_CHIKORITA,
	SPECIES CYNDAQUIL,
	SPECIES_TOTODILE,
}

Ahora, los tres iniciales serán Chikorita, Cyndaquil y Totodile.





Última edición por Disturbo; 30/03/2019 a las 00:03
  #4  
09/03/2019
Predeterminado Respuesta: Índice de pequeñas modificaciones
Cambiar la cantidad de dinero con la que se comienza original
pokeemerald & pokeruby






Abrimos "src/new_game.c" y vamos a la siguiente línea.
Código:
SetMoney(&gSaveBlock1Ptr->money, 3000);

Todo lo que tenemos que hacer es cambiar el 3000 por la nueva cantidad. Para pokeruby, la línea es diferente.
Código:
gSaveBlock1.money = 3000;




Última edición por Disturbo; 30/03/2019 a las 00:05
  #5  
09/03/2019
Predeterminado Respuesta: Índice de pequeñas modificaciones
Cambiar el Pokémon de la introducción de Birch original
pokeemerald & pokeruby






Abrimos "src/player_pc.c" y econtamos las siguientes partes. Puedes usar Ctrl+F "SPECIES_LOTAD" para localizarla.
Código:
	CreatePokeballSpriteToReleaseMon(spriteId, gSprites[spriteId].oam.platteNum, 112, 58, 0, 0, 32, 0x00000FFFF, SPECIES_LOTAD);
	gTasks[taskId].func = Task_NewGameBirchSpeechSub_WaitForLotad;
	gTasks[sBirchSpeechMainTaskId].tTimer = 0;
}
Código:
static u8 NewGameBirchSpeech_CreateLotadSprite(u8 a, u8 b)
{
	return CreatePicSprite2(SPECIES_LOTAD, 8, 0, 1, a, b, 14, -1);
}

Para cambiar el Pokémon simplemente debemos sutituir "SPECIES_LOTAD" por el Pokémon que queramos (Por ejemplo: "SPECIES_TRAPINCH").





Última edición por Disturbo; 30/03/2019 a las 00:06
  #6  
09/03/2019
Predeterminado Respuesta: Índice de pequeñas modificaciones
Disociar las paletas de back y frontsprites del jugador original
pokeemerald






Antes de nada, debes guardar la paleta de tu nuevo back a la carpeta "palettes" dentro de "graphics/trainer". Por simplificar las cosas, las mías se llaman "brendan_back" y "may_back".
Ahora debemos definir las nuevas variables que usaremos para estas paletas.
Abrimos "include/graphics.h" y añadimos las siguientes líneas. Preferiblemente alrededor de la línea 3070 para mantener cierto orden.
Código:
extern const u32 gTrainerBackPicPalette_Brendan[];
extern const u32 gTrainerBackPicPalette_May[];

Ve a “pokeemerald\src\data\graphics\trainers.h” y añade las siguientes dos líneas alrededor de la línea 290 por el mismo motivo que antes.
Código:
const u32 gTrainerBackPicPalette_Brendan[] = INCBIN_U32("graphics/trainers/palettes/brendan_back.gbapal.lz");
const u32 gTrainerBackPicPalette_May[] = INCBIN_U32("graphics\trainers\palettes\may_back.gbapal.lz");

Por último, ve a la siguiente struct en “pokeemerald\src\data\trainer_graphics\back_pic_ta bles.h” y cambia:
Código:
const struct CompressedSpritePalette gTrainerBackPicPaletteTable[] = 
{
	gTrainerPalette_Brendan, 0,
	gTrainerPalette_May, 1,
A esto
Código:
const struct CompressedSpritePalette gTrainerBackPicPaletteTable[] = 
{
	gTrainerBackPicPalette_Brendan, 0,
	gTrainerBackPicPalette_May, 1,

Y eso es todo, ya no te tienes que preocupar que los fronts y backs del jugador tengan los mismos colores.




Última edición por Disturbo; 30/03/2019 a las 00:08
  #7  
09/03/2019
Predeterminado Respuesta: Índice de pequeñas modificaciones
Cambiar los valores predeterminados del menú de opciones original
pokeemerald






Dirígete a “src\new_game.c”. Usa CTRL+F para encontrar lo siguiente:
Código:
static void SetDefaultOptions(void)
{
	gSaveBlock2Ptr->optionsTextSpeed = OPTIONS_TEXT_SPEED_MID;
	gSaveBlock2Ptr->optionsWindowFrameType = 0;
	gSaveBlock2Ptr->optionsSound = OPTIONS_SOUND_MONO;
	gSaveBlock2Ptr->optionsBattleStyle = OPTIONS_BATTLE_STYLE_SHIFT;
	gSaveBlock2Ptr->optionsBattleSceneOff = FALSE;
	gSaveBlock2Ptr->regionMapZoom = FALSE;
}

Estos son los valores que puedes modificar. Se sobreentiende lo que hace cada uno.




Última edición por Disturbo; 30/03/2019 a las 00:09
  #8  
09/03/2019
Predeterminado Respuesta: Índice de pequeñas modificaciones
MTs reusables y hacer que los Pokémon no las puedan llevar original
pokeemerald






Dirígete a “src\party_menu.c”. Usa CTRL+F para encontrar las siguientes líneas. Elimínalas y las MTs ya serán reusables.
Código:
if (item < ITEM_HM01_CUT)
    RemoveBagItem(item, 1);

Para hacer que no tengan un número a su derecha y que no las pueda sujetar un Pokémon, abre "src/data/items.h" y cambia el valor de ".importance" en cada Máquina Técnica a 1. El resultado es el siguiente:





Última edición por Disturbo; 30/03/2019 a las 00:10
  #9  
09/03/2019
Predeterminado Respuesta: Índice de pequeñas modificaciones
¡¡Excelente índice!!

Me alegra ver que vuestro equipo también se ha animado a traducir este tipo de aportes de la comunidad inglesa. Como sugerencias, me gustaría decirte que en lugar de guiones, puedes usar

Esto

Código:
[hr][/hr]
Para crear una barra así


Y en caso de que no quieras que ocupe todo el ancho, puedes escribir

Código:
[CSS-DIV="width: 60%;"][COLOR="Silver"][hr][/hr][/COLOR][/CSS-DIV]
Con lo que se verá algo así:




Que sin duda queda bastante mejor


También te recomendaría que enlazaras cada post en el índice (así cumpliría
mejor la función de índice).

Así


Código:
[post="nºdelpost"]Nombre del tutorial[/post]
Por ejemplo, esto:

Código:
[post="439384"][b][COLOR="Black"][[color=darkgreen]pokeemerald[/color] & [color=darkred]pokeruby[/color]][/b] Editar los items del almacenados en el PC[/COLOR][/post]
Se vería así:

[pokeemerald & pokeruby] Editar los items del almacenados en el PC


Por lo demás, está todo impecable, buen trabajo, seguid así

  #10  
10/03/2019
Predeterminado Respuesta: Índice de pequeñas modificaciones
Sistema de repelente de BW original
pokeemerald






Abrimos "src/script_menu.c" y buscamos la función "DrawMultichoiceMenu", y la reemplazamos con el siguiente código.

Spoiler

Código:
static void DrawMultichoiceMenuCustom(u8 left, u8 top, u8 multichoiceId, u8 ignoreBPress, u8 cursorPos, const struct MenuAction *actions, int count)
{
    int i;
    u8 windowId;
    int width = 0;
    u8 newWidth;

    for (i = 0; i < count; i++)
    {
        width = display_text_and_get_width(actions[i].text, width);
    }

    newWidth = convert_pixel_width_to_tile_width(width);
    left = sub_80E2D5C(left, newWidth);
    windowId = CreateWindowFromRect(left, top, newWidth, count * 2);
    SetStandardWindowBorderStyle(windowId, 0);
    PrintMenuTable(windowId, count, actions);
    InitMenuInUpperLeftCornerPlaySoundWhenAPressed(windowId, count, cursorPos);
    schedule_bg_copy_tilemap_to_vram(0);
    sub_80E1FBC(ignoreBPress, count, windowId, multichoiceId);
}

static void DrawMultichoiceMenu(u8 left, u8 top, u8 multichoiceId, u8 ignoreBPress, u8 cursorPos)
{
    DrawMultichoiceMenuCustom(left, top, multichoiceId, ignoreBPress, cursorPos, gMultichoiceLists[multichoiceId].list, gMultichoiceLists[multichoiceId].count);
}

void TryDrawRepelMenu(void)
{
    static const u16 repelItems[] = {ITEM_REPEL, ITEM_SUPER_REPEL, ITEM_MAX_REPEL};
    struct MenuAction menuItems[4] = {NULL};
    int i, count = 0;

    for (i = 0; i < ARRAY_COUNT(repelItems); i++)
    {
        if (CheckBagHasItem(repelItems[i], 1))
        {
            VarSet(VAR_0x8004 + count, repelItems[i]);
            menuItems[count].text = ItemId_GetName(repelItems[i]);
            count++;
        }
    }

    if (count > 1)
        DrawMultichoiceMenuCustom(0, 0, 0, FALSE, 0, menuItems, count);

    gSpecialVar_Result = (count > 1);
}

void HandleRepelMenuChoice(void)
{
    gSpecialVar_0x8004 = VarGet(VAR_0x8004 + gSpecialVar_Result); // Get item Id;
    VarSet(VAR_REPEL_STEP_COUNT, ItemId_GetHoldEffectParam(gSpecialVar_0x8004));
}


Tras esto, abrimos "data/event_script.s" y buscamos "EventScript_RepelWoreOff", y lo reemplazamos por lo siguiente.

Spoiler

Código:
EventScript_RepelWoreOff:: @ 82A4B2A
	msgbox Text_RepelWoreOff, MSGBOX_SIGN
	checkitem ITEM_REPEL, 1
	compare VAR_RESULT, TRUE
	goto_if_eq EventScript_RepelWoreOff_AskAnother
	checkitem ITEM_SUPER_REPEL, 1
	compare VAR_RESULT, TRUE
	goto_if_eq EventScript_RepelWoreOff_AskAnother
	checkitem ITEM_MAX_REPEL, 1
	compare VAR_RESULT, FALSE
	goto_if_eq EventScript_RepelWoreOff_End
EventScript_RepelWoreOff_AskAnother:
	msgbox Text_RepelAskAnother, MSGBOX_YESNO
	closemessage
	compare VAR_RESULT, 0
	goto_if_eq EventScript_RepelWoreOff_End
	callnative TryDrawRepelMenu
	compare VAR_RESULT, FALSE
	goto_if_eq EventScript_RepelWoreOff_Chose
	waitstate
	compare VAR_RESULT, 127
	goto_if_eq EventScript_RepelWoreOff_End
EventScript_RepelWoreOff_Chose:
	callnative HandleRepelMenuChoice
	bufferitemname 1, VAR_0x8004
	takeitem VAR_0x8004, 1
	playse SE_TU_SAA
	msgbox gText_PlayerUsedVar2, MSGBOX_SIGN
EventScript_RepelWoreOff_End:
	end

Text_RepelWoreOff: @ 82A4B33
	.string "REPEL's effect wore off…$"
Text_RepelAskAnother:
	.string "Would you like to use another one?$"


¡Y eso sería todo! In-game quedaría tal que así:


También hay una branch de la que pullear este sistema directamente.




Última edición por Disturbo; 30/03/2019 a las 00:11
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 09:30.

© Whack a Hack! 2019