Author Topic: Bug/Error Reports  (Read 7547 times)

Offline Mario_Comix

  • Posts: 444
  • *
  • 00 
Re: Bug/Error Reports
« Reply #15 on: November 10, 2016, 09:29:33 PM »
Alright, here's my issue. Let me begin...

I'm currently using Project 64 to emulate MP2, which opens its .n64 file fine. Is Project 64 a good emulator for the custom boards though? Because when I use it to open a .z64 file (which is what Party Planner saves its ROMs as, after overwriting with a custom board), it doesn't work. Any suggestions for solutions?

Also, when I reopen these .z64 files in Party Planner, all the MP2 boards are re-listed as being for MP1, even though they have the right spaces. What's the work-around for that?
Please check out my Super Mario Maker stages! They can be found in the "Super Mario Maker Community Levels" thread.

Offline NintendoFan

  • -
  • Posts: 575
  • *
  • us 
Re: Bug/Error Reports
« Reply #16 on: November 10, 2016, 10:01:38 PM »
You just need to find an original MP2 rom in the .z64 file format. I can't link it here, because, well, piracy issues. You should be able to find one via some google searching.

You should also be sure that the default memory size is set to 8 MB, otherwise the game won't run either way.
Ancient trash.
Spoiler: Smash 4 license (click to show/hide)

Offline PartyPlanner64

  • Posts: 48
  • *
  • 00 
Re: Bug/Error Reports
« Reply #17 on: November 11, 2016, 09:36:25 PM »
It may be the case that an emulator cannot handle .z64 format (which is the real deal format IMO) but PP64 was written to be able to read .n64 and other endian varieties, although I haven't tested it much.

Quote
all the MP2 boards are re-listed as being for MP1, even though they have the right spaces.

I wasn't sure what this meant, which part of the editor is listing something wrong?

Offline Spongyoshi

  • Fan of Mario Parties,other games and Cartoons. I love both the New & Old games!!
  • It's Show Time!
  • Posts: 481
  • *
  • fr 
Re: Bug/Error Reports
« Reply #18 on: November 12, 2016, 09:21:10 AM »
Here are two errors I noticed by now.
- In Mario Party 2, there's a lava-based minigame (dunno which one) that usually crash the game.
- In Mario Party 3, when the AI goes on a intersection point, the game have a chance of crashing.
Except that, it's pretty good  ;D (Besides the AI sucks but that can hardly be helped..)

Offline Mario_Comix

  • Posts: 444
  • *
  • 00 
Re: Bug/Error Reports
« Reply #19 on: November 12, 2016, 04:26:02 PM »
It may be the case that an emulator cannot handle .z64 format (which is the real deal format IMO) but PP64 was written to be able to read .n64 and other endian varieties, although I haven't tested it much.

Quote
all the MP2 boards are re-listed as being for MP1, even though they have the right spaces.

I wasn't sure what this meant, which part of the editor is listing something wrong?

I can't quite replicate what happened, but when I clicked the "Overwrite" button, and those little ! icons pop up to say what's wrong with the board, there would be a red ! saying it's a board for MP1, despite the MP2 ROM, as well as the board actually being in MP2. But I can't seem to replicate it anymore.
Please check out my Super Mario Maker stages! They can be found in the "Super Mario Maker Community Levels" thread.

Offline RandomPG

  • Posts: 1
  • *
Re: Bug/Error Reports
« Reply #20 on: November 14, 2016, 03:12:34 PM »
On two different custom boards in MP3, I've had the game freeze partway through a game after rolling the die. If it matters, I was controlling all four players with one controller.

Offline MG03

  • Posts: 1
  • *
  • us 
Re: Bug/Error Reports
« Reply #21 on: November 14, 2016, 06:40:28 PM »
Just some problems I've run into, all of these have been on netplay with mupen64++, some of these have been noted before:
-In MP2 the game will freeze on a black screen right before Hexagon Heat and Tipsy Tourney, haven't had any problems with any other games
-In MP3 the CPUs will get stuck at branching paths and not do anything

Offline bluesun

  • Posts: 1
  • *
  • jp 
Re: Bug/Error Reports
« Reply #22 on: November 15, 2016, 12:30:19 AM »
MP2 (Mupen64++): Hexagon Heat, Tipsy Tourney. Bowser Bomb or Bowser's Appearing Act (After Bowser rolled three dice)

Offline PartyPlanner64

  • Posts: 48
  • *
  • 00 
Re: Bug/Error Reports
« Reply #23 on: November 15, 2016, 08:54:52 PM »
Just some problems I've run into, all of these have been on netplay with mupen64++, some of these have been noted before:
-In MP2 the game will freeze on a black screen right before Hexagon Heat and Tipsy Tourney, haven't had any problems with any other games
-In MP3 the CPUs will get stuck at branching paths and not do anything

The MP3 computer players should no longer get stuck with tonight's changes.

I also believe I have fixed at least one of the MP2 mini-game crashes, although I have not verified it myself.

Bowser Bomb or Bowser's Appearing Act (After Bowser rolled three dice)

I had not heard about this before, I will try to look into it. The fix may be similar to what I did for MP3 to fix some items.

Offline Spinda

  • NU Tier
  • You Spinda right round...
  • Posts: 2
  • *
  • de 
Re: Bug/Error Reports
« Reply #24 on: November 16, 2016, 01:12:27 PM »
So to get used to the program I decided to start off by making an injokey MP2 map (so dont mind the general badness) and everything works except when I overwrite a map it goes from looking like this

Spoiler (click to show/hide)

to looking like this

Spoiler (click to show/hide)

DL Link of the original map

Offline PartyPlanner64

  • Posts: 48
  • *
  • 00 
Re: Bug/Error Reports
« Reply #25 on: November 16, 2016, 05:21:08 PM »
So to get used to the program I decided to start off by making an injokey MP2 map (so dont mind the general badness) and everything works except when I overwrite a map it goes from looking like this

The issue that is mostly tracking this is here:
https://github.com/PartyPlanner64/PartyPlanner64/issues/20

But how the editor parses boards that have already been written is overall a lower concern, because what really matters is how the game actually plays.

The space alignment issue in-game is probably the most annoying bug right now, and the one I want fixed the most, but it's a huge bore just to think about it. It's really daunting to try to solve it in a reasonable way, and very time consuming to solve in a bruteforce way.

Offline Dark Boo

  • Can I object!?
  • Posts: 3,616
  • *
  • *
  • us 
Re: Bug/Error Reports
« Reply #26 on: November 17, 2016, 09:34:29 AM »
So to get used to the program I decided to start off by making an injokey MP2 map (so dont mind the general badness) and everything works except when I overwrite a map it goes from looking like this

The issue that is mostly tracking this is here:
https://github.com/PartyPlanner64/PartyPlanner64/issues/20

But how the editor parses boards that have already been written is overall a lower concern, because what really matters is how the game actually plays.

The space alignment issue in-game is probably the most annoying bug right now, and the one I want fixed the most, but it's a huge bore just to think about it. It's really daunting to try to solve it in a reasonable way, and very time consuming to solve in a bruteforce way.

Is there a set formula for going from XY to XYZ plane?


EDIT:
Viewing your code

EDIT X2:
Can you explain the significance of these values:
0.13 (Setting the newX variable)
0.90 (Setting the newY variable)
(And the condition where if the newY variable is greater than half the height (On the higher half-plane)

Code: [Select]
onGetBoardCoordsFromGameCoords(x, y, z, width, height, boardIndex) {
      // The following is a bunch of crappy approximations.
      let newX, newY, newZ;
      switch (boardIndex) {
        case 0: // DK's Jungle Adventure
          newX = (width / 2) + (x * (1 + (y * 0.13 / (height / 2))))
               + 30 * (x / (width / 2));
          newY = (height / 2) + ((y + 0) * 0.90);
          if (newY < (height / 2))
            newY += Math.abs(y) / 10;
          else
            newY += Math.abs(y) / 40;
          newZ = 0;
          break;
        case 1: // Peach's Birthday Cake
        case 2: // Yoshi's Tropical Island
        case 3: // Wario's Battle Canyon
        case 4: // Luigi's Engine Room
        case 5: // Mario's Rainbow Castle
        case 6: // Bowser's Magma Mountain
        case 7: // Eternal Star
        case 8: // Training
        case 9: // Mini-Game Stadium
        case 10: // Mini-Game Island
          newX = (width / 2) + x;
          newY = (height / 2) + y;
          newZ = 0;
          break;
        default:
          throw "onGetBoardCoordsFromGameCoords called with bad boardIndex";
}

I would like to know how you got those approximations because they seem to work for the interior of the boards but for the exterior, they become WAY off...

EDIT X3:
I probably know this, but onGetBoardCoordsFromGameCoords and onGetGameCoordsFromBoardCoords are simply inverse functions, correct? And boardCoords from gameCoords is getting the coordinates from the actual game where gameCoords from boardCoords get the coordinates from the editor board?
« Last Edit: November 17, 2016, 10:04:45 AM by Dark Boo »

Offline PartyPlanner64

  • Posts: 48
  • *
  • 00 
Re: Bug/Error Reports
« Reply #27 on: November 17, 2016, 07:16:59 PM »
Can you explain the significance of these values:
0.13 (Setting the newX variable)
0.90 (Setting the newY variable)
(And the condition where if the newY variable is greater than half the height (On the higher half-plane)

I would like to know how you got those approximations because they seem to work for the interior of the boards but for the exterior, they become WAY off...

I probably know this, but onGetBoardCoordsFromGameCoords and onGetGameCoordsFromBoardCoords are simply inverse functions, correct? And boardCoords from gameCoords is getting the coordinates from the actual game where gameCoords from boardCoords get the coordinates from the editor board?

There really is no rhyme or reason to any of the numbers in those functions.

The minimum conversion required is the following, which is needed because the coordinates are stored differently in the game vs in the editor. In the game, X and Y are zero at the center of the board, and they grow outward. I wanted the editor to start X and Y at 0 in the upper left corner. So that's what I use right now for every board but DK right now for example.

Code: [Select]
newX = (width / 2) + x;
newY = (height / 2) + y;
newZ = 0;

From there I just kept messing with it until it reached what it is today :o. I would tweak it and reload the ROM and see how close it made the spaces line up with an image of the board.

The overall idea is that X needs to shrink inwards at the top and expand outwards at the bottom. Y probably has some scaling involved. I'm sure there is some sort of mathematical thing that could help, like a transformation matrix or some perspective math. The truth of it lies in the ROM somewhere.

You're correct that the one should be an inverse of the other, one for parsing and one for overwriting. They are probably not true inverses. I just ran them through Wolfram Alpha when I was done.

Offline Dark Boo

  • Can I object!?
  • Posts: 3,616
  • *
  • *
  • us 
Re: Bug/Error Reports
« Reply #28 on: November 17, 2016, 10:38:12 PM »
Can you explain the significance of these values:
0.13 (Setting the newX variable)
0.90 (Setting the newY variable)
(And the condition where if the newY variable is greater than half the height (On the higher half-plane)

I would like to know how you got those approximations because they seem to work for the interior of the boards but for the exterior, they become WAY off...

I probably know this, but onGetBoardCoordsFromGameCoords and onGetGameCoordsFromBoardCoords are simply inverse functions, correct? And boardCoords from gameCoords is getting the coordinates from the actual game where gameCoords from boardCoords get the coordinates from the editor board?

There really is no rhyme or reason to any of the numbers in those functions.

The minimum conversion required is the following, which is needed because the coordinates are stored differently in the game vs in the editor. In the game, X and Y are zero at the center of the board, and they grow outward. I wanted the editor to start X and Y at 0 in the upper left corner. So that's what I use right now for every board but DK right now for example.

Code: [Select]
newX = (width / 2) + x;
newY = (height / 2) + y;
newZ = 0;

From there I just kept messing with it until it reached what it is today :o . I would tweak it and reload the ROM and see how close it made the spaces line up with an image of the board.

The overall idea is that X needs to shrink inwards at the top and expand outwards at the bottom. Y probably has some scaling involved. I'm sure there is some sort of mathematical thing that could help, like a transformation matrix or some perspective math. The truth of it lies in the ROM somewhere.

You're correct that the one should be an inverse of the other, one for parsing and one for overwriting. They are probably not true inverses. I just ran them through Wolfram Alpha when I was done.

Would you mind if I take a look at this please? I will TRY to see the kinks of it (Hopefully whenever I have free time MINUS work)...

Offline PartyPlanner64

  • Posts: 48
  • *
  • 00 
Re: Bug/Error Reports
« Reply #29 on: November 18, 2016, 06:00:12 PM »
Would you mind if I take a look at this please? I will TRY to see the kinks of it (Hopefully whenever I have free time MINUS work)...

Please do!

While I think it would be best to try and get everything set up like the Github README suggests, you could also patch the function live in the browser to see changes.

Pressing F12, you could paste this in the console for example, and all boards, even DK, would parse without perspective changes. It will wear off when refreshing the page, but you can also just keep changing it and close/open ROM to see the effects.

Code: [Select]
PP64.adapters.MP1.onGetBoardCoordsFromGameCoords = function(x, y, z, width, height, boardIndex) {
  let newX, newY, newZ;
  newX = (width / 2) + x;
  newY = (height / 2) + y;
  newZ = 0;
  return [Math.round(newX), Math.round(newY), Math.round(newZ)];
};