Author Topic: NeoN64Menu v1.1  (Read 7247 times)

0 Members and 1 Guest are viewing this topic.

Offline ChillyWilly

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 1751
  • Just a coding machine.
NeoN64Menu v1.1
« on: August 01, 2010, 06:45:52 PM »
Here is the latest version of the N64 Myth menu - v1.1. Changes include:

Fixed crash when you pressed A or B with no games in the game list.
Fixed crash when you started a game from the SD card before the game info was fetched.
Changed save type and CIC type options to show what they are instead of just a number.
If you have a Neo2-SD or Pro and run the game from the SD card, reset to game works for all games. Still trying to figure a way to do than from game flash in a compatible manner.  ~sm-64.gif~.gif  This feature requires you to have the menu burned to the N64 U2 menu flash.
Added ability for N64 U2 menu to automatically run menu from the GBA menu flash or the SD card. If you run the menu from the GBA menu flash in the first place, it will also check for the menu on the SD card. This creates about a 3 second delay when you don't have an SD card (flash only cart, or no SD card in the cart). Basically, you want to burn the v1.1 menu into the N64 U2 flash, then all minor updates can simply be run from the SD card (or GBA menu flash for flash only carts).

Please read the readme for all the details.
« Last Edit: August 04, 2010, 07:13:03 AM by ChillyWilly »

Offline sanni

  • Moderator
  • Hero Member
  • *****
  • Posts: 503
Re: NeoN64Menu v1.1
« Reply #1 on: August 01, 2010, 07:45:12 PM »
I really like the load from SD function, it makes it so much easier to test changes  :-*
Thank you very much  ::sm-29.gif::

Offline Conle

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 2203
Re: NeoN64Menu v1.1
« Reply #2 on: August 01, 2010, 07:55:42 PM »
Just updated the news page  :)

Offline ronaldo_76

  • Full Member
  • ***
  • Posts: 196
Re: NeoN64Menu v1.1
« Reply #3 on: August 01, 2010, 08:19:42 PM »
hmmmmm ?

i can't upgrade to version 1.1 my myth cart is only to flash... ?  ~sm-66.gif~.gif
« Last Edit: August 01, 2010, 09:08:25 PM by ronaldo_76 »

Offline sanni

  • Moderator
  • Hero Member
  • *****
  • Posts: 503
Re: NeoN64Menu v1.1
« Reply #4 on: August 01, 2010, 08:47:05 PM »
Try this:

Offline Conle

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 2203
Re: NeoN64Menu v1.1
« Reply #5 on: August 01, 2010, 08:49:35 PM »
hmmmmm ?

i can't upgrade to version 1.1 my myth cart is only to flash... ?  ~sm-66.gif~.gif

EDIT HERE A VIDEO PLEADE HELP?

http://www.youtube.com/watch?v=h7_c1rr3w4s

the new menu don't work for me?

Are you installing the menu on U2?
Quote
Installation: Copy NEON64.v64 and NEON64MF.v64 to where your N64 rom

images are. In the Neo2 Pro Manager on your PC, set the boot type to

"TypeA-2: N64 U2", set the BIOS Path A-2 to the NEON64.v64 image, then

click "Burn" to set the menu in the N64 Myth menu flash.



That menu needs to be written to the N64 menu flash in order for some of

the extra features of v1.1 to work. You can burn the NEON64MF.v64 rom

image to the GBA flash cart menu flash, setting the path to the image in

the BIOS Path A-1. If you leave the boot type on TypeA-1, the menu in the

N64 menu flash will detect the menu in the GBA menu flash and run it.

This allows you to do updates to the GBA menu flash, leaving the N64 menu

flash alone unless there is a major update. You could also boot only the

GBA menu flash directly, but you will lose some features of the menu if

you do so.

You have to burn the menu on U2.

Offline ronaldo_76

  • Full Member
  • ***
  • Posts: 196
Re: NeoN64Menu v1.1
« Reply #6 on: August 01, 2010, 09:07:11 PM »
thanks guys

i forget this: BIOS Path A-1 = NEON64MF.v64 (thanks sanni)

on tv: Neo N64 Myth Menu v1.1 (SD)

is that right. ;)


Offline sanni

  • Moderator
  • Hero Member
  • *****
  • Posts: 503
Re: NeoN64Menu v1.1
« Reply #7 on: August 01, 2010, 09:41:22 PM »
Most likely you accidently burned the new 1.1  NEON64.v64 to the GBA menu flash A-1.

Because the NEON64.v64 in U2 will boot the GBA menu flash if it has a menu written to it and because the NEON64.v64 was also on the gba menu it constantly reloaded itself. Creating an endless bootloop.
Overwriting it with  NEON64MF.v64 fixed that as would have a format of the Neo2 carts menu flash e.g. by switching the bootmode to N64 Game and burn/format and after that writing the NEON64.v64 only to U2.

But im just guessing here  ~sm-79.gif~.gif

Also ronaldo, delete the NEON64SD.v64  from the sd cart as you don't need it now since it's the same menu you flashed to the N64 Myth. You only need it if there is a new menu and you don't want to flash the Myth or the Neo2 again.
« Last Edit: August 01, 2010, 09:45:33 PM by sanni »

Offline ChillyWilly

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 1751
  • Just a coding machine.
Re: NeoN64Menu v1.1
« Reply #8 on: August 02, 2010, 02:54:34 AM »
Most likely you accidently burned the new 1.1  NEON64.v64 to the GBA menu flash A-1.

Because the NEON64.v64 in U2 will boot the GBA menu flash if it has a menu written to it and because the NEON64.v64 was also on the gba menu it constantly reloaded itself. Creating an endless bootloop.
Overwriting it with  NEON64MF.v64 fixed that as would have a format of the Neo2 carts menu flash e.g. by switching the bootmode to N64 Game and burn/format and after that writing the NEON64.v64 only to U2.

But im just guessing here  ~sm-79.gif~.gif

Yep:
Code: [Select]
#ifdef RUN_FROM_U2
    // check for boot rom in menu
    if (!memcmp((void *)0xB0000020, "N64 Myth", 8))
        neo_run_menu();

    neo_check_reset_to_game();
#endif

Not sure there's a way to deal with that automatically. Maybe I should check the entire name for the gba menu. Only boot the menu if it says "N64 Myth Menu (MF)".


Quote
Also ronaldo, delete the NEON64SD.v64  from the sd cart as you don't need it now since it's the same menu you flashed to the N64 Myth. You only need it if there is a new menu and you don't want to flash the Myth or the Neo2 again.

Unless you just want to see it load to prove it works.  ~sm-84.gif~.gif

It's mainly for Conle for testing... it's a quick way to try out test versions since copying 1.25 MB to SD card is infinitely faster than burning it to flash.
« Last Edit: August 02, 2010, 02:57:57 AM by ChillyWilly »

Offline Conle

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 2203
Re: NeoN64Menu v1.1
« Reply #9 on: August 02, 2010, 05:05:37 AM »
Quote
It's mainly for Conle for testing... it's a quick way to try out test versions since copying 1.25 MB to SD card is infinitely faster than burning it to flash.

Everyone will appreciate this feature...soon or later  :D


Quote
Not sure there's a way to deal with that automatically. Maybe I should check the entire name for the gba menu. Only boot the menu if it says "N64 Myth Menu (MF)".

The best way is to have a version string.  8)

Here's a quick test-code i just wrote(Requires very few changes  ::sm-18.gif:: ).
Please note that i haven't compiled it , and as you know i still can't test it either.   ::sm-16.gif::

Code: [Select]
enum
{
MENU_TYPE_UNKNOWN = -1,
MENU_TYPE_MF,
MENU_TYPE_U2
MENU_TYPE_SD
};

//N64MythNNNNNN { = N64MythMF0001,N64MythSD0001,N64MythU20001 }

inline void get_menu_version(const char* code,int* version,int* type)
{
*type = *version = MENU_TYPE_UNKNOWN;

if(memcmp(code,"N64Myth",7))
return;

if(memcmp(code + 7,"U2",2))
*type = MENU_TYPE_U2;
else if(memcmp(code + 7,"MF",2))
*type = MENU_TYPE_MF;
else if(memcmp(code + 7,"SD",2))
*type = MENU_TYPE_SD;

*version =  *(code + 9 + 0) - '0';
*version *= 10 + *(code + 9 + 1) - '0';
*version *= 10 + *(code + 9 + 2) - '0';
*version *= 10 + *(code + 9 + 3) - '0';
}

....
int v,r;
int ver[3] = {-1,-1,-1};
int id[3] = {MENU_TYPE_UNKNOWN,MENU_TYPE_UNKNOWN,MENU_TYPE_UNKNOWN};

//Step #1 - read the version from U2(Not really that important---better yet , avoid reading from it)

//Step #2 - read the version from flash
if (!memcmp((void *)0xB0000020, "N64Myth",7))
get_menu_version((const char*)0xB0000020,&ver[1],&id[1]);

//Step #3 read the version from SD
    neo2_enable_sd();
    bmax = getSDInfo(-1);

    if (bmax)
    {
char buf[0x40];
        XCHAR fpath[32];

        strcpy(path, "/.menu/n64/");
        strcpy(gTable[0].name, "NEON64SD.v64");
        c2wstrcpy(fpath, path);
        c2wstrcat(fpath, gTable[0].name);

        if (f_open(&gSDFile, fpath, FA_OPEN_EXISTING | FA_READ) == FR_OK)
        {
f_read(&gSDFile,fpath,0x40....
get_menu_version(buf + 0x20,&ver[2],&id[2]);

//if SD & MF EQ , MF has higher priority
if(((ver[1] > -1) && (ver[2] > -1)) && (ver[1] == ver[2]))
r = MENU_TYPE_MF;
else
{
for(r = -1,v = 0; v < 3; v++)
{
if(ver[v] > r)
r = v;
}
}

switch(r)
{
case MENU_TYPE_UNKNOWN:
case MENU_TYPE_U2:
{
neo2_disable_sd();
goto exit_point;
break;//wont reach
}

case MENU_TYPE_MF:
{
neo2_disable_sd();
neo_run_menu();
break;//wont reach
}

case MENU_TYPE_SD:
f_seek...move 0x40bytes back
break;//let it load
}

get_menu_version(buf,&ver[2],&id[2]);

            gTable[0].valid = 1;
            gTable[0].type = 127;
            gTable[0].options[0] = 0xFF;
            gTable[0].options[1] = 0;
            gTable[0].options[2] = 0;
            gTable[0].options[3] = 0;
            gTable[0].options[4] = 16;      // 16 Mbits
            gTable[0].options[5] = 5;
            gTable[0].options[6] = 2;
            gTable[0].options[7] = 0;
            get_sd_info(0);
            copySD2Psram(0, 0);
            neo_run_psram(gTable[0].options, 1);
        }
        neo2_disable_sd();
    }

exit_point:
« Last Edit: August 02, 2010, 05:09:21 AM by Conle »