Talk:Turnip

From WiiBrew
Jump to navigation Jump to search

Cool Idea

Cool idea, i'll suggest you to get the savegame from the nand because it's easyer than going forth and back from many homebrews. If you edit the rvforst.dat on the nand i don't think that you need to change any hash because the file is not packed in a data.bin, but i dunno if the game does some sanity checks too.. Btw check on wiisaves, there are also PAL savegames. --The Lemon Man 09:08, 14 July 2009 (UTC)

Thanks, that is a great suggestion. I am still learning on all this, so if you know some good tutorial on reading the nand to open a file like rvforest.dat and just read it (no need to write in this case), please let me know. --Conanac 01:04, 15 July 2009 (UTC)
Just use ios_open/ios_read --The Lemon Man 08:59, 21 July 2009 (UTC)

Does it Work

Does this really work? I ran this app three times and each time it gave me different turnip prices for the week. I even played the game and checked the current turnip prices for Tuesday night and the Turnip app showed the price as different than what Tom Nook was buying for. Deozaan 07:19, 15 July 2009 (UTC)

I have worked with several players to test and it always works. Do you have the north america version, i.e. animal crossing city folk? If you dont, then you need to help me by providing me with your RVFOREST.DAT file and also the list of turnip prices each weekday morning and afternoon (for the week when you save that RVFOREST.DAT file) then I could update this application. Just a quick check what the directory name that this file is stored in your SD? Is it RUUE? --Conanac 14:41, 15 July 2009 (UTC)
Yes I have the NTSC-U version. Animal Crossing: City Folk. I just tested it again today and this morning bells were going for 144 and this afternoon they're going for 179 but the Turnip app says this morning they should have been 61 and this afternoon they should be 58. Deozaan 18:27, 15 July 2009 (UTC)
I found out what the problem was. I was using Savegame Manager which saves the files to SD:\savegames\RUUE\rvforest.dat instead of in the WIISAVES directory. I just also happened to have extracted my Animal Crossing data several months ago. It works great! Thanks so much! Now I have a feature request: Since it's much more convenient to use one application instead of two, can you also have Turnip check for data in the savegames\RUUE directory? Thanks a lot! Deozaan 18:33, 15 July 2009 (UTC)
Great!, I will put your request in the to-do list for next update. Thanks for using it and providing great suggestions. --Conanac 19:29, 15 July 2009 (UTC)

Name

Name change, instead of turnip it should be, turniip--Aujakev 15:38, 15 July 2009 (UTC)

Tell me more on the reason --Conanac 15:46, 15 July 2009 (UTC)

UK PAL version

I'm playing the UK PAL version of the game, Animal Crossing : Let's Go To The City. The program seems to work fine (i'll report back at the end of the week!). The only difference is, when I extract the save to my SD card, the folder is titled RUUP, rather than RUUE. If this is indeed the only difference, can you get the next update to check for that folder too (so I dont have to rename it). --Budge74 15:10, 9 August 2009 (UTC)

Thanks for testing it, and yes, let me know. My expectation is that it should work given the gamesave file that I have seen so far for the UK PAL version of this game. And I will incorporate your great suggestion in the next release. --Conanac 17:14, 10 August 2009 (UTC)
Yep, prices were right all week. Too bad they didn't go above 120... :) --Budge74 14:18, 14 August 2009 (UTC)

Update?

Any news on the update Conanac? --Budge74 21:15, 2 September 2009 (UTC)

I am planning to release the new version either by the end of this month or the beginning of next month. Have been busy with other things in life, I wish I could spend more time on this. FYI, I have done reverse engineering the way the game puts/creates the checksums (more than one in fact) in the gamesave file (I have been thinking to allow application user to change their turnip prices if they want). Thanks always for reminding me to make progress. --Conanac 02:24, 5 September 2009 (UTC)

test 0.2

Please test this new version 0.2 TurnipTest and let me know if you find any problems. New functionalities: using xml setting/input file to set directories and filenames, changing turnip prices. Thanks in advance. --Conanac 00:32, 26 September 2009 (UTC)

Moving the test version page to the release version page. Let me know if you have any issues or feedback. Thanks. --Conanac 11:42, 30 September 2009 (UTC)

Source code

Your app says it's released under the GPL, but I see no source download link. I would really like to see how you did the XML parsing --Yossi 09:13, 2 October 2009 (UTC)

Since I am in the process of cleaning the codes, here is the example taken from the codes that shows how to parse xml file (a brute force method, but it works, and there are definitely better ways to reduce this long section of codes).
void readsettingxml()
{
    // for mxml structure
    mxml_node_t *tree;
    mxml_node_t *node;
    char *nodecontent;
    int price;
    FILE *ft;

    // test for uploading setting from xml file
    tree = NULL;
    chdir("/");
    ft = fopen("turnipsetting.xml", "r");
    if (ft == NULL) {
	    fclose(ft);
    }
    else {
          tree = mxmlLoadFile(NULL,ft,MXML_TEXT_CALLBACK);
	  node = mxmlFindElement(tree,tree,"sdirname",NULL,NULL,MXML_DESCEND);
	  if (node) {
            nodecontent = node->child->value.text.string;
            strfcpy(dirwiisave,nodecontent,MAXPATHLEN);
            }
          node = mxmlFindElement(tree,tree,"sfilename",NULL,NULL,MXML_DESCEND);
	  if (node) {
            nodecontent = node->child->value.text.string;
            strfcpy(rvforestname,nodecontent,MAXPATHLEN);
            }
	  node = mxmlFindElement(tree,tree,"tdirname",NULL,NULL,MXML_DESCEND);
	  if (node) {
            nodecontent = node->child->value.text.string;
            strfcpy(dirturnip,nodecontent,MAXPATHLEN);
            }
          node = mxmlFindElement(tree,tree,"tfilename",NULL,NULL,MXML_DESCEND);
	  if (node) {
            nodecontent = node->child->value.text.string;
            strfcpy(turnipname,nodecontent,MAXPATHLEN);
            }
          node = mxmlFindElement(tree,tree,"sunam",NULL,NULL,MXML_DESCEND);
          if (node) {
		price = atoi(node->child->value.text.string);
            if (price > 0 && price <= 999) {
                usunam = price; }
            else {
                usunam = 0; }
	    }
          node = mxmlFindElement(tree,tree,"monam",NULL,NULL,MXML_DESCEND);
          if (node) {
		price = atoi(node->child->value.text.string);
            if (price > 0 && price <= 999) {
                umonam = price; }
            else {
                umonam = 0; }
	    }
          node = mxmlFindElement(tree,tree,"monpm",NULL,NULL,MXML_DESCEND);
          if (node) {
		price = atoi(node->child->value.text.string);
            if (price > 0 && price <= 999) {
                umonpm = price; }
            else {
                umonpm = 0; }
	    }
          node = mxmlFindElement(tree,tree,"tueam",NULL,NULL,MXML_DESCEND);
          if (node) {
		price = atoi(node->child->value.text.string);
            if (price > 0 && price <= 999) {
                utueam = price; }
            else {
                utueam = 0; }
	    }
          node = mxmlFindElement(tree,tree,"tuepm",NULL,NULL,MXML_DESCEND);
          if (node) {
		price = atoi(node->child->value.text.string);
            if (price > 0 && price <= 999) {
                utuepm = price; }
            else {
                utuepm = 0; }
	    }
          node = mxmlFindElement(tree,tree,"wedam",NULL,NULL,MXML_DESCEND);
          if (node) {
		price = atoi(node->child->value.text.string);
            if (price > 0 && price <= 999) {
                uwedam = price; }
            else {
                uwedam = 0; }
	    }
          node = mxmlFindElement(tree,tree,"wedpm",NULL,NULL,MXML_DESCEND);
          if (node) {
		price = atoi(node->child->value.text.string);
            if (price > 0 && price <= 999) {
                uwedpm = price; }
            else {
                uwedpm = 0; }
	    }
          node = mxmlFindElement(tree,tree,"thuam",NULL,NULL,MXML_DESCEND);
          if (node) {
		price = atoi(node->child->value.text.string);
            if (price > 0 && price <= 999) {
                uthuam = price; }
            else {
                uthuam = 0; }
	    }
          node = mxmlFindElement(tree,tree,"thupm",NULL,NULL,MXML_DESCEND);
          if (node) {
		price = atoi(node->child->value.text.string);
            if (price > 0 && price <= 999) {
                uthupm = price; }
            else {
                uthupm = 0; }
	    }
          node = mxmlFindElement(tree,tree,"friam",NULL,NULL,MXML_DESCEND);
          if (node) {
		price = atoi(node->child->value.text.string);
            if (price > 0 && price <= 999) {
                ufriam = price; }
            else {
                ufriam = 0; }
	    }
          node = mxmlFindElement(tree,tree,"fripm",NULL,NULL,MXML_DESCEND);
          if (node) {
		price = atoi(node->child->value.text.string);
            if (price > 0 && price <= 999) {
                ufripm = price; }
            else {
                ufripm = 0; }
	    }
          node = mxmlFindElement(tree,tree,"satam",NULL,NULL,MXML_DESCEND);
          if (node) {
		price = atoi(node->child->value.text.string);
            if (price > 0 && price <= 999) {
                usatam = price; }
            else {
                usatam = 0; }
	    }
          node = mxmlFindElement(tree,tree,"satpm",NULL,NULL,MXML_DESCEND);
          if (node) {
		price = atoi(node->child->value.text.string);
            if (price > 0 && price <= 999) {
                usatpm = price; }
            else {
                usatpm = 0; }
	    }
        fclose(ft);
	mxmlDelete(node);
	mxmlDelete(tree);          
    }
}

Hope this helps, and let me know if you need further assistance. --Conanac 22:44, 2 October 2009 (UTC)

turnipsettings

I tried updating my turnip prices with this new update and it did not seem to work. I edeited the turnipsettings file to change friday am and friday pm price. I am on friday am at the moment. I wait 5 minutes (a LONG time btw) for it to do its stuff. I than reinstalled the rvforest.dat file and no change in price. I ran the turnip price checker and it still said the old prices.

I created a new turnipsettings and tried again and this time it worked. something must have been wrong with the first one Ncc-1701 18:17, 2 October 2009 (UTC)

Great, and since the application will read the rvforest.dat file again after you submitting the change request (that LONG time process), then if you see the prices change as you expect, then you could reinstall rvforest.dat, otherwise try to fix the setting/input file first (so no need to check the prices in the game). And let me know if you still find issues/problems. --Conanac 22:44, 2 October 2009 (UTC)

Europe version works!

The EU/AU version of AC:CF works correctly with Turnip. So I changed the page with that information.

Thanks for testing, and that is actually the intention for having xml setting file. --Conanac 23:48, 26 October 2009 (UTC)