Romhacking.net

Romhacking => Personal Projects => Topic started by: JUg on August 10, 2015, 06:02:53 pm

Title: Koopamite (Gyromite Hack) *UPDATE* 08/17/2015
Post by: JUg on August 10, 2015, 06:02:53 pm
So I've started working a Mario version of GYROMITE, using THE JABU's one player hacked Gyromite. Most of the tiles have been changed but I still have to work out some graphic bugs. I'm trying to make small changes to the levels using the HEX EDITOR, but it's a pain. Is there any Gyromite level editors out there?

** UPDATED 08/26/2015 **

- Graphic overhaul almost complete
- Mario Dolls replaced with Exclamation boxes
- Turn-ip replaced with coin
- Background no longer just black
- Level editor completed

(http://www.slgraph.net/banners/koopamite/koopamite_06.jpg)


** UPDATED 08/17/2015**

- Phase 01 revamped
- Phase 02 revamped
- Player 2 palettes match player 1, except Koopa which is Blue
- Gyromite playable with only 1 controller, thanks to JABU's hack
- Hack no longer a mario edition, name is officially SUPER KOOPAMITE SPECIAL EDITION
- Thanks to Quick Curly I was able to build a software to edit levels
- Main character changed from Mario to a Koopa
- Enemies no longer Shyguys, changed to Spinnies
- Added climbing animation to Spinnies and Koopa

(http://www.slgraph.net/banners/koopamite/koopamite_02.png)_(http://www.slgraph.net/banners/koopamite/koopamite_05.png)
Title: Re: Gyromite Mario Edition
Post by: M-Tee on August 12, 2015, 02:18:24 am
Are you really planning on mixing the outline-having artstyle smb2 US with the non-outline having SMB1 style?
Title: Re: Gyromite Mario Edition
Post by: JUg on August 12, 2015, 03:01:45 pm
I haven't decided on the final style yet actually. I might actually use the SMB2 USA sprites for mario as well, since there is a sprite for mario carrying vegetables and stuff. So I guess I have my answer now, I'm planning to go with the outline style of SMB2 USA.
Title: Re: Gyromite Mario Edition
Post by: Quick Curly on August 12, 2015, 03:05:00 pm
This seems like a very cool idea for a project. Nice work so far. :)
General rule of thumb: If you Google it and don't find anything other than posts asking if there is a level editor for a specific game, chances are that, unfortunately, there likely isn't one. Similarly, if a game is hacked barely or not at all, chances are that someone likely hasn't taken their time to program a level editor for it. A game really only ever seems to be hacked once there is a utility to simplify the modifying process, which can only come about when someone takes the time to figure out how the game works to begin with, and then has the ability to program a utility to modify the data, normally visually to help the process.

I don't know how much information you have already found yourself, so maybe this post won't be that helpful for you.

Using the FCEUXD emulator, I found the following information for the "Gyromite (W) [!].nes" ROM.

With this information at hand, it might help to draw out the levels that you want to design, and then add them in by hand through a hex editor. At least, until someone looks into this game and designs a level editor for it. However, I don't see this happening anytime soon, unless this thread peeks their interest and motivation enough to do so.
Best of luck with your project! :beer:

- - - - - - - - - - - - - - - - - - - -
RAM: ROM
$8000-$9FFF: 0x0010-0x200F
$A000-$BFFF: 0x2010-0x400F
$C000-$DFFF: 0x4010-0x600F
$E000-$FFFF: 0x6010-0x800F
- - - - - - - - - - - - - - - - - - - -
Game A: 40 Phases. If you win Phase 40, it starts over at Phase 1.
Game B: 25 Phases. Starts from R=01 (Phase 1).
- - - - - - - - - - - - - - - - - - - -
0x33AB-0x33CA (0x20) - Select Mode & Phase loading screen palette
0x33CF-0x33EE (0x20) - Title screen palette
0x3483-0x34A2 (0x20) - Phase 01 palette
- - - - - - - - - - - - - - - - - - - -
0x3510-0x3672 (0x163) - Select Mode screen graphical tiles to draw
- - - - - - - - - - - - - - - - - - - -
0x36B6-0x373D (0x88) - Screen graphical tiles to draw at top of Phase screen (1P score, time)
- - - - - - - - - - - - - - - - - - - -
0x3939-0x3970 (0x38) - Phase loading screen display - border, Phase, Player
- - - - - - - - - - - - - - - - - - - -
0x3971-0x3AAF (0x13F) - Title screen graphical tiles & palette definitions
- - - - - - - - - - - - - - - - - - - -
0x3E9C-0x3EC3 (0x28) - Game A - Order of Phase designs
15 - Phase 01
20 - Phase 02
00 - Phase 03
1A - Phase 04
07 - Phase 05
08 - Phase 06
09 - Phase 07
0A - Phase 08
01 - Phase 09
1C - Phase 10
23 - Phase 11
0B - Phase 12
0C - Phase 13
0D - Phase 14
0E - Phase 15
0F - Phase 16
10 - Phase 17
11 - Phase 18
12 - Phase 19
13 - Phase 20
14 - Phase 21
02 - Phase 22
03 - Phase 23
17 - Phase 24
18 - Phase 25
19 - Phase 26
04 - Phase 27
1B - Phase 28
06 - Phase 29
1D - Phase 30
1E - Phase 31
1F - Phase 32
16 - Phase 33
21 - Phase 34
22 - Phase 35
05 - Phase 36
24 - Phase 37
25 - Phase 38
26 - Phase 39
27 - Phase 40
- - - - - - - - - - - - - - - - - - - -
0x3EC4-0x3F13 (0x50) - Game A - Pointers for Phase designs
41 BF - $BF41 (0x3F51) - Phase 03 (00)
D1 BF - $BFD1 (0x3FE1) - Phase 09 (01)
61 C0 - $C061 (0x4071) - Phase 22 (02)
F1 C0 - $C0F1 (0x4101) - Phase 23 (03)
81 C1 - $C181 (0x4191) - Phase 27 (04)
11 C2 - $C211 (0x4221) - Phase 36 (05)
A1 C2 - $C2A1 (0x42B1) - Phase 29 (06)
31 C3 - $C331 (0x4341) - Phase 05 (07)
C1 C3 - $C3C1 (0x43D1) - Phase 06 (08)
51 C4 - $C451 (0x4461) - Phase 07 (09)
E1 C4 - $C4E1 (0x44F1) - Phase 08 (0A)
71 C5 - $C571 (0x4581) - Phase 12 (0B)
01 C6 - $C601 (0x4611) - Phase 13 (0C)
91 C6 - $C691 (0x46A1) - Phase 14 (0D)
21 C7 - $C721 (0x4731) - Phase 15 (0E)
B1 C7 - $C7B1 (0x47C1) - Phase 16 (0F)
41 C8 - $C841 (0x4851) - Phase 17 (10)
D1 C8 - $C8D1 (0x48E1) - Phase 18 (11)
61 C9 - $C961 (0x4971) - Phase 19 (12)
F1 C9 - $C9F1 (0x4A01) - Phase 20 (13)
81 CA - $CA81 (0x4A91) - Phase 21 (14)
11 CB - $CB11 (0x4B21) - Phase 01 (15)
A1 CB - $CBA1 (0x4BB1) - Phase 33 (16)
31 CC - $CC31 (0x4C41) - Phase 24 (17)
C1 CC - $CCC1 (0x4CD1) - Phase 25 (18)
51 CD - $CD51 (0x4D61) - Phase 26 (19)
E1 CD - $CDE1 (0x4DF1) - Phase 04 (1A)
71 CE - $CE71 (0x4E81) - Phase 28 (1B)
01 CF - $CF01 (0x4F11) - Phase 10 (1C)
91 CF - $CF91 (0x4FA1) - Phase 30 (1D)
21 D0 - $D021 (0x5031) - Phase 31 (1E)
B1 D0 - $D0B1 (0x50C1) - Phase 32 (1F)
41 D1 - $D141 (0x5151) - Phase 02 (20)
D1 D1 - $D1D1 (0x51E1) - Phase 34 (21)
61 D2 - $D261 (0x5271) - Phase 35 (22)
F1 D2 - $D2F1 (0x5301) - Phase 11 (23)
81 D3 - $D381 (0x5391) - Phase 37 (24)
11 D4 - $D411 (0x5421) - Phase 38 (25)
A1 D4 - $D4A1 (0x54B1) - Phase 39 (26)
31 D5 - $D531 (0x5541) - Phase 40 (27)
- - - - - - - - - - - - - - - - - - - -
TSA Data

There are 4 tile values per block. The order is laid out as follows:
First value = Top-left corner tile of block
Second value = Top-right corner tile of block
Third value = Bottom-left corner tile of block
Fourth value = Bottom-right corner tile of block

0x3F14-0x3F3F (0x2C)
30 30 30 30 - 00: Black background tile
5C 5E 5D 5F - 01: Horizontal construction block
6C 6E 6D 6F - 02: Vertical construction block
36 38 37 39 - 03: Left connector of gate
40 42 41 43 - 04: Right connector of gate
34 34 35 35 - 05: Ground/bricks
50 34 50 34 - 06: Brick walls
44 47 45 48 - 07: Top of blue gate
4A 4B 3C 3F - 08: Bottom of blue gate
45 48 45 48 - 09: Middle of blue gate
30 60 30 60 - 0A: Rope

Other blocks:
0B: Blue gate open
0C: Red gate open
0D: Top of red gate
0E: Bottom of red gate
0F: Middle of red gate
- - - - - - - - - - - - - - - - - - - -
A level's object data is stored at $0300 in RAM.
Let's look at Phase 01.
Each row is 0x18 (in hex) bytes long. 24 (in decimal) blocks to draw.
There are 12 rows. 24 x 12 = 288 blocks.

Phase 01's object data in RAM is $0300-$041F (0x120).

01 01 00 00 07 00 00 0A 00 00 00 00 0A 00 00 00 07 00 00 00 00 0A 01 01
00 02 00 00 09 00 00 0A 00 00 00 00 0A 00 00 00 09 00 00 00 00 0A 02 00
00 01 01 03 08 04 01 00 01 01 07 01 0A 00 00 00 09 00 00 00 00 0A 02 00
00 02 00 00 00 0A 01 01 01 01 09 01 00 01 01 03 08 04 01 01 01 0A 02 00
00 02 00 00 00 0A 00 0A 00 00 08 04 01 01 0A 00 00 00 00 00 00 0A 02 00
00 02 00 01 01 0A 00 0A 00 00 00 00 00 00 0A 00 00 00 00 00 00 0A 02 00
00 02 00 00 01 01 01 0A 00 00 00 00 00 00 0A 00 00 01 01 01 01 0A 02 00
00 02 00 00 00 00 01 01 01 01 01 01 01 01 0A 01 01 01 00 00 00 0A 02 00
00 02 00 00 00 00 00 00 00 00 00 00 00 00 0A 00 00 00 00 00 00 0A 02 00
00 02 00 00 00 00 00 00 00 00 00 00 00 00 0A 00 00 00 00 00 00 0A 02 00
05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05
05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05

Phase 01's object data in the ROM is from 0x4B21-0x4BB0 (0x90).

11 00 70 0A 00 00 A0 00 D0 00 0A 11
02 00 90 0A 00 00 A0 00 F0 00 0A 20
01 13 84 10 11 71 A0 00 F0 00 0A 20
02 00 BA 11 11 91 01 13 E4 11 1A 20
02 00 BA 0A 00 84 11 A0 C0 00 0A 20
02 01 1A 0A 00 B0 00 A0 C0 00 0A 20
02 00 11 1A 00 B0 00 A0 C1 11 1A 20
02 00 00 11 11 11 11 A1 11 00 0A 20
02 00 00 00 00 00 00 A0 00 00 0A 20
02 00 00 00 00 00 00 A0 00 00 0A 20
55 55 55 55 55 55 55 55 55 55 55 55
55 55 55 55 55 55 55 55 55 55 55 55

288 blocks, 144 bytes in decimal representing object data.
So, each byte actually represents two blocks in the object data!

The first 11 represents the first two "01" horizontal construction blocks.
Next, 00 represents two empty tiles.
70 represents the top of a blue gate and then an empty tile.
Etc.
Title: .
Post by: Chpexo on August 12, 2015, 03:17:42 pm
.
Title: Re: Gyromite Mario Edition
Post by: Erockbrox on August 12, 2015, 06:15:06 pm
i personally would rather have bombs than mushrooms with fuses on their tops.
Title: Re: Gyromite Mario Edition
Post by: SunGodPortal on August 12, 2015, 06:31:23 pm
Quote
i personally would rather have bombs than mushrooms with fuses on their tops.

I agree. Plus, there were bombs in Mario games so... Only reason I could see for this is if Gyromite likes to eat bombs. I wouldn't know though. I remember trying to play this game a while back and had no idea what to do.
Title: Re: Gyromite Mario Edition
Post by: JUg on August 12, 2015, 07:07:56 pm
Wow! Ok, well, I had some of the info for Hex editor, but you completed everything I was looking for.

As for the shrooms, yeah, my intention was to remove the fuses later on.

Here is a screenshot of my level editing. Thanks to Quick Curly, this made the process a lot easier. I made an editor in Fusion 2.5 and I exported the level code and pasted in the Hex Editor at the appropriate address. Now I just need to figure out how to move the bombs, the food and the mobs.

(http://www.slgraph.net/banners/screen_02.jpg)
Title: Re: Gyromite Mario Edition
Post by: Quick Curly on August 12, 2015, 11:03:36 pm
Thanks to Quick Curly, this made the process a lot easier. I made an editor in Fusion 2.5 and I exported the level code and pasted in the Hex Editor at the appropriate address. Now I just need to figure out how to move the bombs, the food and the mobs.
You're very welcome. :)
Wow! That's very impressive! Awesome work! :thumbsup:

I realized after I made the post earlier that I had forgotten about the other data. Sorry about that. I looked back in FCEUXD and found it for Phase 01, with the basic direction of how you can find it for all of the other Phases, too.

There is still Game B to consider, too. If you want to know how I found this, use the Code/Data Logger in FCEUX or FCEUXD, load the level, and then look for the bytes lit up in blue. Then, with some trial and error, you can figure things out.
For all of the work that you've evidently already put into this, I hope that you'll be able to see your project through to completion. Best of luck! :beer:

- - - - - - - - - - - - - - - - - - - -
Code: [Select]
$91CD (0x11DD)
$91CD:A9 51     LDA #$51
$91CF:85 57     STA $57 = #$4D

$91D9 (0x11E9)
$91D9:A9 D6     LDA #$D6
$91DB:85 58     STA $58 = #$D7

$91E4 (0x11F4)
$91E4:A5 57     LDA $57 = #$4D
$91E6:18        CLC
$91E7:69 0C     ADC #$0C
$91E9:85 57     STA $57 = #$4D
The above code finds the smicks' starting space address for the correct level. It increases by 0xC bytes each time to cycle through them, starting at 0x5661 ($D651).
- - - - - - - - - - - - - - - - - - - -
Starting Places - Smicks

0x575D-0x5768 (0xC) - Phase 01
88 F8 00 00 98 58 00 00 00 00 00 00
88 - X-coordinate of first smick
F8 - X-coordinate of second smick
00 - No third smick
00 - No fourth smick
98 - Y-coordinate of first smick
58 - Y-coordinate of second smick
00 - No third smick
00 - No fourth smick
00 - Screen of first smick
00 - Screen of second smick
00 - Screen of third smick
00 - Screen of fourth smick

Example: Replace 00 coordinates with numbers to add another smick.
For the screen number, change to 01 if you want the smick to be further to the right, and not on the first screen (00).
- - - - - - - - - - - - - - - - - - - -
Code: [Select]
$8FCF (0x0FDF)
$8FCF:A9 31     LDA #$31
$8FD1:85 57     STA $57 = #$AB

$8FDB (0x0FEB)
$8FDB:A9 D8     LDA #$D8
$8FDD:85 58     STA $58 = #$D9

$8FE6 (0x0FF6)
$8FE6:A5 57     LDA $57 = #$AB
$8FE8:18        CLC
$8FE9:69 12     ADC #$12
$8FEB:85 57     STA $57 = #$AB
The above code finds the dynamite starting space address for the correct level. It increases by 0x12 bytes each time to cycle through them, starting at 0x5841 ($D831).
- - - - - - - - - - - - - - - - - - - -
Starting Places - Dynamite

0x59BB-0x59CC (0x12) - Phase 01
28 58 68 D8 28 48 - X-coordinates
B8 48 88 38 C8 78 - Y-coordinates
00 00 00 00 01 01 - Screen number
- - - - - - - - - - - - - - - - - - - -
Code: [Select]
$844B (0x045B)
$844B:B9 01 DB  LDA $DB01,Y @ $DB2B = #$28
$844E:8D 09 06  STA $0609 = #$00

$8459 (0x0469)
$8459:B9 02 DB  LDA $DB02,Y @ $DB2C = #$48
$845C:8D 08 06  STA $0608 = #$00
The above code handles the professor's starting position.
- - - - - - - - - - - - - - - - - - - -
Starting Places - Professor

First byte is X-coordinate/horizontal starting position.
Second byte is Y-coordinate/vertical starting position.

0x5B3B-0x5B3C (0x2) - Phase 01
28 48
28 pixels horizontally right
48 pixels vertically down
- - - - - - - - - - - - - - - - - - - -
Code: [Select]
$941A (0x142A)
$941A:A9 51     LDA #$51
$941C:85 57     STA $57 = #$0E
$941E:A9 DB     LDA #$DB
$9420:85 58     STA $58 = #$DC

$9429 (0x1439)
$9429:A5 57     LDA $57 = #$0E
$942B:18        CLC
$942C:69 09     ADC #$09
$942E:85 57     STA $57 = #$0E
$9430:90 02     BCC $9434
$9432:E6 58     INC $58 = #$DC
The above code finds the turnips' starting space address for the correct level. It increases by 0x9 bytes each time to cycle through them, starting at 0x5B61 ($DB51).
- - - - - - - - - - - - - - - - - - - -
Starting Places - Turnips

0x5C1E-0x5C26 (0x9) - Phase 01
78 C8 00 58 68 00 00 00 00
78 - X-coordinate of first turnip
C8 - X-coordinate of second turnip
00 - No third turnip
58 - Y-coordinate of first turnip
68 - Y-coordinate of second turnip
00 - No third turnip
00 - Screen of first turnip
00 - Screen of second turnip
00 - Screen of third turnip
Title: Re: Gyromite Mario Edition
Post by: JUg on August 13, 2015, 12:19:53 am
Now I can place/remove Smicks, place/remove Dynamites and move the starting position of the professor (if needed). I can also assign new graphics (like the rope) to those part of the layout. I also realized how limited my knowledge was when you started helping me with this. What do you think I should place instead of the turnip? I was thinking of a coin, but I can't make it animated and I would need to swap it's pallette because it shares the same one as the Smicks (for the top part). 6502 is not part of my skill set. I've chosen spinies to replace the shy guys as well. Seemed appropriate.

(http://www.slgraph.net/banners/screen_03.jpg)
Title: Re: Gyromite Mario Edition
Post by: M-Tee on August 13, 2015, 11:15:19 pm
How are you handling the enemy climbing the vine animation?
Title: Re: Gyromite Mario Edition
Post by: Grimlock on August 13, 2015, 11:27:31 pm
How are you handling the enemy climbing the vine animation?

Rotating the sprite (raising the head end up) somewhere between 22~45-deg might be worth trying.  It still might look funky but it would be better than duplicating the walking animation (like it's floating up.

Another idea you could try is rotate the sprite 90-deg, face up and just have the sprite mirror back and fourth as it ascends.

It's a tough one really (if the goal is to be consistent with the Super Mario series graphics).  You'll just have to try a few different approaches to see what works best.
Title: .
Post by: Chpexo on August 14, 2015, 10:26:57 am
.
Title: Re: Gyromite Mario Edition
Post by: hossbags2 on August 16, 2015, 07:40:33 am
Can you replace the Gyromite music with music from different types of Mario games that would fit in nicely on the current board you are on.....like Mario Bros world 1 level 2.
Title: Re: Gyromite Mario Edition
Post by: JUg on August 16, 2015, 11:32:13 am
Can you replace the Gyromite music with music from different types of Mario games that would fit in nicely on the current board you are on.....like Mario Bros world 1 level 2.

I was thinking about that, but I don't know much about 6502 ASM and I hear that the music coding of GYROMITE would have to be coded the same way as Super marios Bros. to be able to transfer it. So yeah ... not gonna happen unless someone with intense ASM skills does it.
Title: Re: Gyromite Mario Edition
Post by: Quick Curly on August 16, 2015, 01:41:05 pm
Well, music can always be considered and looked at later. Sometimes it helps to focus on modifying the main stuff first, usually the levels. :beer:
How is the level editing coming along? Are you able to figure out and understand the relevant data for the other levels besides Phase 01, and how is everything progressing so far?
Also, don't feel rushed. Take your time. We can all wait. :thumbsup:

Now I can place/remove Smicks, place/remove Dynamites and move the starting position of the professor (if needed). I can also assign new graphics (like the rope) to those part of the layout. I also realized how limited my knowledge was when you started helping me with this.

I like how you used the information to help change the rope to the vine. Well done!
No worries. You're doing well, and your project is coming together. :cookie:
If you have anymore questions, please feel free to ask, and hopefully I or someone else will be able to help. Keep it up!
Title: Re: Gyromite Mario Edition
Post by: JUg on August 16, 2015, 03:12:05 pm
Well, music can always be considered and looked at later. Sometimes it helps to focus on modifying the main stuff first, usually the levels. :beer:
How is the level editing coming along? Are you able to figure out and understand the relevant data for the other levels besides Phase 01, and how is everything progressing so far?
Also, don't feel rushed. Take your time. We can all wait. :thumbsup:

I like how you used the information to help change the rope to the vine. Well done!
No worries. You're doing well, and your project is coming together. :cookie:
If you have anymore questions, please feel free to ask, and hopefully I or someone else will be able to help. Keep it up!

Yeah, I actually had to rework from scratch because I modified a code that crashed the game when it started phase 01. Right now I'm focusing on the graphics and I've changed the main character. It's now a Koopa and the hack will be called Super Koopamite. Once I'm satisfied with it all the tile changes, I will start working on the levels. I'm still not sure if I should keep the Turnip. It's too bad I can't find a way to make it 4 tiles instead of 2 and the fact that it uses 2 different palettes is odd to me.

(http://www.slgraph.net/banners/koopamite/koopamite_02.png)(http://www.slgraph.net/banners/koopamite/koopamite_01.png)

So now the spinnies have a climbing animation sprite and so does the Koopa. Altough I'm not satisfied with how the climbing Koopa looks only in one direction, I'll try to fix it later if I find a better way.
Title: .
Post by: Chpexo on August 16, 2015, 04:39:54 pm
.
Title: Re: Gyromite Mario Edition *UPDATE* Now Koopamite
Post by: JUg on August 16, 2015, 05:17:10 pm
Interesting decision to change and it definitely feels like a fresh idea. What made you decide to change.

Well, I was thinking about a story for this hack ... and just saying Bowser found a new way to mess with Mario seemed dull. So I figured I would put the Koopas in some sort of training session because bowser is fed up with them not beating mario and he has them pick up dynamites (subject to change) so they can be faster. You know, simple 1980's game logic ;P
Title: Re: Gyromite Mario Edition *UPDATE* Now Koopamite
Post by: SunGodPortal on August 16, 2015, 05:42:33 pm
Quote
You know, simple 1980's game logic ;P

:)
Title: Re: Gyromite Mario Edition *UPDATE* Now Koopamite
Post by: Quick Curly on August 16, 2015, 07:59:58 pm
Looks pretty awesome! I like the title screen, and how well the modified graphics blend together (to me).

Concerning the turnips, I tried to look into it for you.

0x1CDF - 96 - Turnip (Top tile)
0x1CE0 - 97 - Turnip (Bottom tile)

0x1FAC - 02 - Turnip Palette Attribute (Top, Green)
0x1FAF - 01 - Turnip Palette Attribute (Bottom, Red)

If you want both tiles of the turnip to use the green palette, change 0x1FAF to 02.
If you want both tiles of the turnip to use the red palette, change 0x1FAC to 01.
Similarly, you can change both to 00 or 03 to use the other parts of the sprite palette.
That way, both tiles will use the same part of the palette, since that seems to be what you would prefer, by the sounds of it.

As for being able to use 4 tiles for the turnip instead of 2, that might require some work. Unfortunately, that might be beyond me.

Here are some pages you might want to read concerning sprites:
PPU OAM - Nesdev wiki (http://wiki.nesdev.com/w/index.php/PPU_OAM)
PPU sprite evaluation - Nesdev wiki (http://wiki.nesdev.com/w/index.php/PPU_sprite_evaluation)
Sprite size - Nesdev wiki (http://wiki.nesdev.com/w/index.php/Sprite_size)

Quote
Most programs write to a copy of OAM somewhere in CPU addressable RAM (often $0200-$02FF) and then copy it to OAM each frame using the OAMDMA ($4014) register.

Here is $0200-$02FF (0x100) in RAM when the emulation is paused as soon as Phase 01 appears on the screen.

2D FF 20 88 - Weird sprite, X: 88, Y: 2D, palette 0, unimplemented
90 6A 42 79 - Top of smick's back, X: 79, Y: 90, palette 2, horizontal flip
98 6B 42 79 - Bottom of smick's back, X: 79, Y: 98, palette 2, horizontal flip
90 68 42 80 - Top of smick's front, X: 80, Y: 90, palette 2, horizontal flip
98 69 42 80 - Bottom of smick's front, X: 80, Y: 98, palette 2, horizontal flip
50 6A 42 E9 - Top of smick's back, X: E9, Y: 50, palette 2, horizontal flip
58 6B 42 E9 - Bottom of smick's back, X: E9, Y: 58, palette 2, horizontal flip
50 68 42 F0 - Top of smick's front, X: F0, Y: 50, palette 2, horizontal flip
58 69 42 F0 - Bottom of smick's front, X: F0, Y: 58, palette 2, horizontal flip
EC FD 42 F1 - Blank sprite
F4 FD 42 F1 - Blank sprite
EC FD 42 F8 - Blank sprite
F4 FD 42 F8 - Blank sprite
EC FD 42 F1 - Blank sprite
F4 FD 42 F1 - Blank sprite
EC FD 42 F8 - Blank sprite
F4 FD 42 F8 - Blank sprite
51 96 02 6C - Turnip top, X: 6C, Y: 51, palette 2
59 97 01 6C - Turnip bottom, X: 6C, Y: 59, palette 1
61 96 02 BC - Turnip top, X: BC, Y: 61, palette 2
69 97 01 BC - Turnip bottom, X: BC, Y: 69, palette 1
ED FD 02 F4 - Blank sprite
F5 FD 01 F4 - Blank sprite
3A 00 00 18 - Professor (left side, front, head), X: 18, Y: 3A, palette 0
42 01 00 18 - Professor (left side, front, hand), X: 18, Y: 42, palette 0
4A 02 00 18 - Professor (left side, front, foot), X: 18, Y: 4A, palette 0
3A 03 00 20 - Professor (right side, back, head), X: 20, Y: 3A, palette 0
42 04 00 20 - Professor (right side, back, hand), X: 20, Y: 42, palette 0
4A 05 00 20 - Professor (right side, back, foot), X: 20, Y: 4A, palette 0
F4 00 00 00 - Doesn't appear: Professor sprite, X: 00, Y: F4, palette 0
F4 00 00 00 - Doesn't appear: Professor sprite, X: 00, Y: F4, palette 0
F4 00 00 00 - Doesn't appear: Professor sprite, X: 00, Y: F4, palette 0
F4 00 00 00 - Doesn't appear: Professor sprite, X: 00, Y: F4, palette 0
F4 00 00 00 - Doesn't appear: Professor sprite, X: 00, Y: F4, palette 0
A8 54 01 1C - Dynamite fuse, X: 1C, Y: A8, palette 1
B0 50 03 18 - Dynamite, X: 18, Y: B0, palette 3
B8 51 03 18 - Dynamite, X: 18, Y: B8, palette 3
B0 52 03 20 - Dynamite, X: 20, Y: B0, palette 3
B8 53 03 20 - Dynamite, X: 20, Y: B8, palette 3
38 54 01 4C - Dynamite fuse, X: 4C, Y: 38, palette 1
40 50 03 48 - Dynamite, X: 48, Y: 40, palette 3
48 51 03 48 - Dynamite, X: 48, Y: 48, palette 3
40 52 03 50 - Dynamite, X: 50, Y: 40, palette 3
48 53 03 50 - Dynamite, X: 50, Y: 48, palette 3
78 54 01 5C - Dynamite fuse, X: 5C, Y: 78, palette 1
80 50 03 58 - Dynamite, X: 58, Y: 80, palette 3
88 51 03 58 - Dynamite, X: 58, Y: 88, palette 3
80 52 03 60 - Dynamite, X: 60, Y: 80, palette 3
88 53 03 60 - Dynamite, X: 60, Y: 88, palette 3
28 54 01 CC - Dynamite fuse, X: CC, Y: 28, palette 1
30 50 03 C8 - Dynamite, X: C8, Y: 30, palette 3
38 51 03 C8 - Dynamite, X: C8, Y: 38, palette 3
30 52 03 D0 - Dynamite, X: D0, Y: 30, palette 3
38 53 03 D0 - Dynamite, X: D0, Y: 38, palette 3
E7 FD 00 20 - Blank sprite
E8 FD 01 10 - Blank sprite
F8 FD 81 10 - Blank sprite
E8 FD 41 24 - Blank sprite
F8 FD C1 24 - Blank sprite
E7 FD 00 40 - Blank sprite
E8 FD 01 30 - Blank sprite
F8 FD 81 30 - Blank sprite
E8 FD 41 44 - Blank sprite
F8 FD C1 44 - Blank sprite

So, it appears that Gyromite uses 8x8 sprites. Sprite tile #$FD is blank, and it appears quite a bit on the screen. Perhaps "things" can be manipulated somehow in some way so that you can fit in an extra 2 tiles for each turnip.
There are a few blank tiles available in the CHR-ROM for sprite graphics.
From the way the turnip related data is set up, it seems that there are a maximum of 3 turnips in each level. So, there should be room (at least, in theory).
An idea for a Mario-related change could even be the vegetables (Veggies/Sprouts).
However, a consideration that comes to mind is a potential risk for sprite flickering.
There are other people more experienced with this area who could probably help you out more with this than I can at this point, if it's really something you choose to look into. However, hopefully this can help you and others get started. As always, best of luck.
Title: Re: Gyromite Mario Edition *UPDATE* Now Koopamite
Post by: JUg on August 16, 2015, 08:56:26 pm
I'll look into it Curly, thanks.

Here is the Gyromite Editor I'm working on at the same time. It's not much, but it does the job of basic level editing as far as tiles are concerned and then it exports the locations to a sheet in a .txt file which can be copied directly into the rom in a hex editor.

(http://www.slgraph.net/banners/koopamite/gyroed.jpg)
Title: Re: Gyromite Mario Edition *UPDATE* Now Koopamite
Post by: Jeville on August 16, 2015, 09:08:43 pm
If you want, you can look into the turnip from Ice Climber. It's only a little too big and doesn't take a lot to adjust to fit it into 2 tiles.

(http://i.imgur.com/yLQsUxt.png)
Title: Re: Gyromite Mario Edition *UPDATE* Now Koopamite
Post by: JUg on August 17, 2015, 10:59:31 am
Looks pretty awesome! I like the title screen, and how well the modified graphics blend together (to me).

Now I'm working on the levels. Still not sure what is going to replace the Dynamite. I was thinking of the ? boxes, or even Mario dolls. It would be kinda of funny having Bowser send Koopas to train and threaten them to grab Mario doll bombs to escape the training rooms. Now that I wrote this, I think this is what I'm going to do lol Mario Doll it is.

As for the music. Do you think you could find the address? Theres three tunes in the game. I can switch them using the RAM in FCEUX but I can't find them in the ROM file. Since the JABU's hack removes the option to test ROB, obviously, since he's not needed to play this hack. Maybe this would help to switch music eventually. I could have every 5 levels be a bonus round with a different tune. I like the idea someone pointed out of putting the W1-2 of SMB in there at some point. Since I'm going to focus on level design, I could implement this while I'm doing it.

I have three tiles I can use for other purposes. My question is this : Can we assign an effect to them? Like when the main character (Professor) hits a Smick, he dies. Can we assign that function to tile 04 (Right connector). Could be useful if I wanted to add pits or water in the levels.



August 19, 2015, 07:45:35 pm - (Auto Merged - Double Posts are not allowed before 7 days.)
(http://www.slgraph.net/banners/koopamite/koopamite_05.png)

To emphasize that Bowser is throwing the Koopa troopa in a training session, I placed Bowser in the hud at the top as he watches the progress of his minion. Dyamite was changed to Mario dolls that explode. Still need to find out how to change the palette of bowser. It uses the same as the red pipe. Other than that, the first 5 phases have been changed.

And I've looked into the TURNIP

0x1FAC

02 FA FC 01 02 FC F0 00 F5 F3

02 - Palette control of top turnip
FA - Controls Y position of Top Turnip
FC - controls x position of top turnip
01 - Palette control of bottom turnip
02 - COntrols Y position of bottom turnip
FC - controls x position of bottom turnip
F0 - Adds a third part to Turnip (with palette)
00 - Controls Y position of previous part
F5 - Controls x position of previous part
F3 - Adds a fourth part to turnip (with palette)
00 - Controls Y position of previous part
FD - Controls x position of previous part

Unfortunatly, adding two tiles sends the game into flicker hell! Litterally. Any turnips drawn before the last one is erased as well. They are still there, but are invisible.
Title: Re: Koopamite (Gyromite Hack) *UPDATE* 08/17/2015
Post by: JUg on August 26, 2015, 10:15:27 pm
Alright, so here is a graphical update. Still have to find a way to change some palettes around for the hud, which I can't seem to figure out. I haven't found a way to assign the Player's color palette to the hud above, it would certainly fix Bowser's color scheme and allow me to add background effects behind the vines at the same time. If anyone can help me out, I would appreciate.

Other than that, I'll have to find someone to help me fix the pipe backround. This will be fix with the palette of the vine if I can use another one for the hud. The other issue I'm running into is that in the level coding, 0B (Blue pipe movement) and 0C (Red pipe movement) are used to define the pattern of where the pipe needs to be brought down, and this somehow destroys the tiles in its path at the same time. I could live with it being completly black. These two tiles apparently use the same 8x8 tiles as the Black Background, so they point to 0x3f14 but are assigned a different set of colors.

Finally, the plan is to find someone to mess around with the code to add Bullet Bills coming out of the light blue pipes and make the game more like a maze gauntlet.

(http://www.slgraph.net/banners/koopamite/koopamite_06.jpg)
Title: .
Post by: Chpexo on August 26, 2015, 10:38:53 pm
.
Title: Re: Koopamite (Gyromite Hack) *UPDATE* 08/17/2015
Post by: Grimlock on August 26, 2015, 10:43:11 pm
Your hack is really looking pretty neat, I still have my original Gyromite cart from when I was a wee munchkin (insert nostalgia here). 

I'm looking forward to your release!  :thumbsup:

I would have to agree with Chpexo, I personally like the all black background as well.  The pattern gives off a somewhat busy look.
Title: Re: Koopamite (Gyromite Hack) *UPDATE* 08/17/2015
Post by: JUg on August 26, 2015, 11:21:20 pm
What if I make the background less busy? There is no darker tone for the blue I'm using in the NES palette. This is how It will look when I find a way to fix the hud palettes to match the player's palette (for the vines).

(http://www.slgraph.net/banners/koopamite/koopamite_07.jpg)

So if I am going to fix the vine background, I need to change one color, but in order to do this, I need to change the following (in short, everything in the HUD needs to use the same set of colors) :

(http://www.slgraph.net/banners/koopamite/koopamite_08.jpg)

But since I can't use the sprite palette, I need to rethink all my background palette colors.
Title: Re: Koopamite (Gyromite Hack) *UPDATE* 08/17/2015
Post by: Vanya on August 26, 2015, 11:42:25 pm
What about the lighter background color under the pipes?
Isn't that an easy fix by just swapping the colors on the relevant palette and then redrawing any tiles that go wierd?
Title: Re: Koopamite (Gyromite Hack) *UPDATE* 08/17/2015
Post by: JUg on August 26, 2015, 11:50:58 pm
The color glitch is caused by the pipes. The tiles below the pipes use the same colors as the pipe themselves. These tiles are there to limit the pipe's movements. In the editor, you need to place those tiles. It's always 1 less tile than the total of tiles used by the pipe. So a 5 tile long pipe needs 4 tiles of movement under it to work. I could make the last color be black, but then, that would change all the light blue colors in the HUD.
Title: .
Post by: Chpexo on August 27, 2015, 07:20:28 pm
.
Title: Re: Koopamite (Gyromite Hack) *UPDATE* 08/17/2015
Post by: Vanya on August 28, 2015, 03:53:11 am
The color glitch is caused by the pipes. The tiles below the pipes use the same colors as the pipe themselves. These tiles are there to limit the pipe's movements. In the editor, you need to place those tiles. It's always 1 less tile than the total of tiles used by the pipe. So a 5 tile long pipe needs 4 tiles of movement under it to work. I could make the last color be black, but then, that would change all the light blue colors in the HUD.

I'd change the palette for the pipes to use the dark blue instead of the light blue so the background tiles match up.
Then change the the side pipes to use the green pipe palette.
And finally, pick new colors for the first palette and use that palette for the HUD.

Resulting in something like this:
(http://i256.photobucket.com/albums/hh189/koala_knight/Stuff/koopamite_07edit_zps3zfpvyl2.jpg) (http://s256.photobucket.com/user/koala_knight/media/Stuff/koopamite_07edit_zps3zfpvyl2.jpg.html)
Title: Re: Koopamite (Gyromite Hack) *UPDATE* 08/17/2015
Post by: JUg on August 28, 2015, 09:31:43 am
I'd change the palette for the pipes to use the dark blue instead of the light blue so the background tiles match up.
Then change the the side pipes to use the green pipe palette.
And finally, pick new colors for the first palette and use that palette for the HUD.



That's the plan, however, that not how easy it is. I still have to find a way to change where the hud picks it choice of colors, because until I do, it will and always use the same as the two pipes. So I have to keep the light there until I find a way. I need to move the colors chosen for one of the tiles into the last four colors because it uses the same, then change the first 4 so and apply them to something else. Which I can't seem to figure out. I can't find the Name table for the background tiles aside from the 4 8x8 tiles combinations.
Title: .
Post by: Chpexo on August 28, 2015, 04:27:52 pm
.
Title: Re: Koopamite (Gyromite Hack) *UPDATE* 08/17/2015
Post by: JUg on August 29, 2015, 02:07:53 pm
Modify addresses 0x3734 and 0x3735 to the value $55 to change the top part of Bowser's palette. I'll leave the other half to you.

Thanks. It did allow me to find a way to change the entire first line of the hud to the first 4 colors by looking around those addresses, but I've hit a wall again. The only thing I was able to do was change the first line of the hud in all game modes, after that, I can't find any values that have any effect aside form glitching the game so badly that it just hangs. I'm definatly going to need some help at this point. I think I've reached my knowledge limit. Been at this for 5 hours now and I can't find the correct values. Going to keep trying for sure though.