Exemplo n.º 1
0
void gamePluginEntry() {
	u32 ret, key;
	INIT_SHARED_FUNC(plgGetIoBase, 8);
	// wait for game starts up (5 seconds)
	svc_sleepThread(5000000000);

	if (((NS_CONFIG*)(NS_CONFIGURE_ADDR))->sharedFunc[8]) {
		isNewNtr = 1;
	} else {
		isNewNtr = 0;
	}
	
	if (isNewNtr) {
		IoBasePad = plgGetIoBase(IO_BASE_PAD);
	}
	while (1) {
		svc_sleepThread(100000000);
		
		key = getKey();
		if (key == BUTTON_R) {
      u16 *id = (u16*)0x16F4C460;
      char id_str[5] = {0};
      for (size_t i = 0; i < 4u; ++i)
      {
        id_str[i] = (char)READU16(id + i);
      }
      
      u16 result = (u16)strtoul(id_str, NULL, 16);
      WRITEU16(0x15FBEDD0, result);
			waitKeyUp();
		}

	}
}
Exemplo n.º 2
0
void    seed_jap(void) //JAP
{
	u16        result;

	if (is_pressed(BUTTON_R + BUTTON_DD))
	{
		u16        *id = (u16 *)0x16FE3C60;
		char    id_str[5] = { 0 };
		int        i;
		for (i = 0; i < 4; i++)
			id_str[i] = (char)READU16(id + i);
		result = (u16)strtoul(id_str, NULL, 16);
		reset_search();
		add_search_replace(0x20A7, result);
		find_and_replace_multiple((void *)0x1609D158, 0x5000);
		find_and_replace_multiple((void *)0x160B9B28, 0x1000);
		wait_all_released();
	}
	if (is_pressed(BUTTON_R + BUTTON_DU))
	{
		u16        *id = (u16 *)0x16FE3C60;
		char    id_str[5] = { 0 };
		int        i;
		for (i = 0; i < 4; i++)
			id_str[i] = (char)READU16(id + i);
		result = (u16)strtoul(id_str, NULL, 16);
		reset_search();
		add_search_replace(result, 0x7FFE);
		find_and_replace_multiple((void *)0x1609D158, 0x5000);
		find_and_replace_multiple((void *)0x160B9B28, 0x1000);
		wait_all_released();
	}
	if (is_pressed(BUTTON_R + BUTTON_DL))
	{
		u16        *id = (u16 *)0x16FE3C60;
		char    id_str[5] = { 0 };
		int        i;
		for (i = 0; i < 4; i++)
			id_str[i] = (char)READU16(id + i);
		result = (u16)strtoul(id_str, NULL, 16);
		reset_search();
		add_search_replace(result, 0x20A7);
		find_and_replace_multiple((void *)0x1609D158, 0x5000);
		find_and_replace_multiple((void *)0x160B9B28, 0x1000);
		wait_all_released();
	}
}
Exemplo n.º 3
0
void    text2item4_jap(void)//jap
{
	u16        *id = (u16 *)0x16FE3C60;
	char    id_str[5] = { 0 };
	int        i;
	u16        result;

	if (!is_pressed(BUTTON_X + BUTTON_DR))
		return;
	for (i = 0; i < 4; i++)
		id_str[i] = (char)READU16(id + i);
	result = (u16)strtoul(id_str, NULL, 16);
	WRITEU16(0x16074000, result);
	WRITEU16(0xAEEC28, result);
	WRITEU16(0xAF8B38, result);
	WRITEU16(0xB02A48, result);
	WRITEU16(0xB0C958, result);
	WRITEU16(0xB0BA58, result);
	wait_keys_released(X + DR);
}
Exemplo n.º 4
0
void quench(void)
{
    u32     address;
    u32     item;

    if (!is_pressed(BUTTON_R + BUTTON_A) && !g_text_activated)
        return;
    // Parse all items in Town
    for (address = g_town_items; address < g_town_items + RANGE_TOWN_ITEMS; address += ITEM_BYTES)
    {
        item = READU16(address);
        // Deal with wilted flower
        if (item >= 0xCE && item <= 0xF7)
        {
            item -= 0x2F;
        }
        // If item is a flower add water flag
        if (item >= 0x9F && item <= 0xC8)
        {
            item |= 0x40000000;
            WRITEU32(address, item);
        }
    }
}
Exemplo n.º 5
0
void extract_strings(uint8_t * buffer, size_t len)
{
	size_t off = 0;
	int i;
	uint16_t id;
	uint32_t l;
	char lang[8];
	char fname[32];
	FILE * f;
	while((off = find_word(buffer, locl, off, len)) < len) {
/*
002e3c4c: 4c4f434c		LOCL long word
002e3c50: 00000000
002e3c54: 00010000		???
002e3c58: 002e3c4c LOCL
002e3c5c: 002e3c04 (C) Copyright Hewlett-Packard Company 1987-1994. All Rights Reserved.
002e3c60: 01309572		???
002e3c64: 00000101		???
002e3c68: 002e7c84 en
002e3c6c: 002e7c87 US
002e3c70: 000007d4		? sometimes 00000005 or 0000000C (tr-TR)
002e3c74: adf80000		string id (word)
002e3c78: 002e7c8c Insert memory card
*/
		if((READU32((buffer+off+4))) == 0) {
			for(i = 0; i < 64; i += 4) {
				l = READU32((buffer+off+i));
				printf("%08lx: %08x", off+i, l);
				if(l > 0x10000 && l < len) printf(" %s", buffer + l);
				printf("\n");
			}
			snprintf(lang, sizeof(lang), "%s-%s",
			         buffer + (READU32((buffer+off+0x1C))),
			         buffer + (READU32((buffer+off+0x20))));
			/*n = READU32((buffer+off+0x24));*/
			/*printf("%s : %d strings\n", lang, n);*/
			snprintf(fname, sizeof(fname), "strings.%s", lang);
			f = fopen(fname, "w");
			for(i = 0; /*i < n*/; i++) {
				id = READU16((buffer+off+0x28+i*8)); 
				if(id == 0 || READU16((buffer+off+0x28+i*8+2)) != 0) break;
				l = READU32((buffer+off+0x28+i*8+4));
				fprintf(f, "%04X (=%d):\n%s\n\n", id, id, buffer + l);
			}
			fclose(f);
			printf("\n");
		} else {
			printf("%08lx : LOCL\n", off);
		}
		off += 4;
	}
	off = 0;
	while((off = find_word(buffer, locm, off, len)) < len) {
		if((READU32((buffer+off+8))) == 0x00010000) {
			for(i = 0; i < 64; i += 4) {
				l = READU32((buffer+off+i));
				printf("%08lx: %08x", off+i, l);
				if(l > 0x10000 && l < len) printf(" %s", buffer + l);
				printf("\n");
			}
			snprintf(fname, sizeof(fname), "strings.LOCM_%06lX%s", off);
			f = fopen(fname, "w");
			for(i = 0; /*i < n*/; i++) {
				uint16_t flags;
				id = READU16((buffer+off+0x28+i*8));
				flags = READU16((buffer+off+0x28+i*8+2));
				if(id == 0) break;
				l = READU32((buffer+off+0x28+i*8+4));
				fprintf(f, "%04X (=%d) flags=%04X :\n%s\n\n", id, id, flags, buffer + l);
			}
			fclose(f);
			printf("\n");
		} else {
			printf("%08lx LOCM\n", off);
		}
		off += 4;
	}
}
Exemplo n.º 6
0
void quench_jap()
{
  // define flowers (include wilted)
static const u16 flowers[] = {
    // src, replace
    0x009F, 0x009F, // Red Tulips
    0x00A0, 0x00A0, // White Tulips
    0x00A1, 0x00A1, // Yellow Tulips
    0x00A2, 0x00A2, // Pink Tulips
    0x00A3, 0x00A3, // Purple Tulips
    0x00A4, 0x00A4, // Black Tulips
    0x00A5, 0x00A5, // Orange Tulips
    0x00A6, 0x00A6, // White Pansies
    0x00A7, 0x00A7, // Yellow Pansies
    0x00A8, 0x00A8, // Red Pansies
    0x00A9, 0x00A9, // Purple Pansies
    0x00AA, 0x00AA, // Orange Pansies
    0x00AB, 0x00AB, // Blue Pansies
    0x00AC, 0x00AC, // White Comsos
    0x00AD, 0x00AD, // Red Cosmos
    0x00AE, 0x00AE, // Sun Cosmos
    0x00AF, 0x00AF, // Pink Cosmos
    0x00B0, 0x00B0, // Orange Cosmos
    0x00B1, 0x00B1, // Black Cosmos
    0x00B2, 0x00B2, // Red Roses
    0x00B3, 0x00B3, // White Roses
    0x00B4, 0x00B4, // Yellow Roses
    0x00B5, 0x00B5, // Pink Roses
    0x00B6, 0x00B6, // Orange Roses
    0x00B7, 0x00B7, // Purple Roses
    0x00B8, 0x00B8, // Black Roses
    0x00B9, 0x00B9, // Blue Roses
    0x00BB, 0x00BB, // Red Carnations
    0x00BC, 0x00BC, // Pink Carnations
    0x00BD, 0x00BD, // White Carnations
    0x00BE, 0x00BE, // White Lilies
    0x00BF, 0x00BF, // Yellow Lilies
    0x00C0, 0x00C0, // Red Lilies
    0x00C1, 0x00C1, // Orange Lilies
    0x00C2, 0x00C2, // Pink Lilies
    0x00C3, 0x00C3, // Black Lilies
    0x00C4, 0x00C4, // Purple Violets
    0x00C5, 0x00C5, // Blue Violets
    0x00C6, 0x00C6, // White Violets
    0x00C7, 0x00C7, // Yellow Violets
    0x00C8, 0x00C8, // Jacob's Ladder
    0x00CE, 0x009F, // Red Tulips (Wilted)
    0x00CF, 0x00A0, // White Tulips (Wilted)
    0x00D0, 0x00A1, // Yellow Tulips (Wilted)
    0x00D1, 0x00A2, // Pink Tulips (Wilted)
    0x00D2, 0x00A3, // Purple Tulips (Wilted)
    0x00D3, 0x00A4, // Black Tulips (Wilted)
    0x00D4, 0x00A5, // Orange Tulips (Wilted)
    0x00D5, 0x00A6, // White Pansies (Wilted)
    0x00D6, 0x00A7, // Yellow Pansies (Wilted)
    0x00D7, 0x00A8, // Red Pansies (Wilted)
    0x00D8, 0x00A9, // Purple Pansies (Wilted)
    0x00D9, 0x00AA, // Orange Pansies (Wilted)
    0x00DA, 0x00AB, // Blue Pansies (Wilted)
    0x00DB, 0x00AC, // White Cosmos (Wilted)
    0x00DC, 0x00AD, // Red Cosmos (Wilted)
    0x00DD, 0x00AE, // Sun Cosmos (Wilted)
    0x00DE, 0x00AF, // Pink Cosmos (Wilted)
    0x00DF, 0x00B0, // Orange Cosmos (Wilted)
    0x00E0, 0x00B1, // Black Cosmos (Wilted)
    0x00E1, 0x00B2, // Red Roses (Wilted)
    0x00E2, 0x00B3, // White Roses (Wilted)
    0x00E3, 0x00B4, // Yellow Roses (Wilted)
    0x00E4, 0x00B5, // Pink Roses (Wilted)
    0x00E5, 0x00B6, // Orange Roses (Wilted)
    0x00E6, 0x00B7, // Purple Roses (Wilted)
    0x00E7, 0x00B8, // Black Roses (Wilted)
    0x00E8, 0x00B9, // Blue Roses (Wilted)
    0x00E9, 0x00BA, // Gold Roses (Wilted)
    0x00EA, 0x00BB, // Red Carnations (Wilted)
    0x00EB, 0x00BC, // Pink Carnations (Wilted)
    0x00EC, 0x00BD, // White Carnations (Wilted)
    0x00ED, 0x00BE, // White Lilies (Wilted)
    0x00EE, 0x00BF, // Yellow Lilies (Wilted)
    0x00EF, 0x00C0, // Red Lilies (Wilted)
    0x00F0, 0x00C1, // Orange Lilies (Wilted)
    0x00F1, 0x00C2, // Pink Lilies (Wilted)
    0x00F2, 0x00C3, // Black Lilies (Wilted)
    0x00F3, 0x00C4, // Purple Violets (Wilted)
    0x00F4, 0x00C5, // Blue Violets (Wilted)
    0x00F5, 0x00C6, // White Violets (Wilted)
    0x00F6, 0x00C7, // Yellow Violets (Wilted)
    0x00F7, 0x00C8, // Jacob's Ladder (Wilted)
};
  int i;
  u32 address, item;
	if (is_pressed(BUTTON_R + BUTTON_A))
  // find all items in Town
  for(address = OFFSET_TOWN_ITEMS; address < OFFSET_TOWN_ITEMS_JAP + RANGE_TOWN_ITEMS; address += ITEM_BYTES){
    item = READU16(address);

    // find flowers
    for(i = 0; i < sizeof(flowers) / sizeof(u16); i += 2){
      if(item == flowers[i]){
        // replace item
        WRITEU16(address, flowers[i + 1]);

        // add water flag
        WRITEU16(address + 0x02, 0x4000);
        break;
			}
		}
	}
}