Homebrew [WIP][Game] Bottomless Block Barrage - a Tetris Attack/Panel De Pon/Pokemon Puzzle League clone

UltiNaruto

Well-Known Member
Member
Joined
Sep 4, 2015
Messages
182
Trophies
0
Age
27
XP
168
Country
France
Doesn't look like to forget to clear the panel now but now it crashes for 5 moves solution and more when the puzzle is too complex (this was already happening with first release too).
And still black screen. And nothing on command line. It doesn't output any error after the instruction OnSave.

EDIT : Still the same problems with clearing and did you add exception handler? Because I don't get any error but it still crashes. Guess I'll try to build the linux version to see if I get same errors.
 
Last edited by UltiNaruto,

TricksterGuy

Well-Known Member
OP
Newcomer
Joined
Jan 16, 2016
Messages
81
Trophies
0
Age
34
Location
California
XP
190
Country
United States
Doesn't look like to forget to clear the panel now but now it crashes for 5 moves solution and more when the puzzle is too complex (this was already happening with first release too).
And still black screen. And nothing on command line. It doesn't output any error after the instruction OnSave.

EDIT : Still the same problems with clearing and did you add exception handler? Because I don't get any error but it still crashes. Guess I'll try to build the linux version to see if I get same errors.

Yeah don't use the solver for anything too complex. I tried on that 12x6 puzzle and it didn't end well. As I said it's a dumb little algorithm I wrote in a single night
 

TricksterGuy

Well-Known Member
OP
Newcomer
Joined
Jan 16, 2016
Messages
81
Trophies
0
Age
34
Location
California
XP
190
Country
United States
Doesn't look like to forget to clear the panel now but now it crashes for 5 moves solution and more when the puzzle is too complex (this was already happening with first release too).
And still black screen. And nothing on command line. It doesn't output any error after the instruction OnSave.

EDIT : Still the same problems with clearing and did you add exception handler? Because I don't get any error but it still crashes. Guess I'll try to build the linux version to see if I get same errors.

What file name did you try to save to? did it contain non ascii characters?

And yeah I should make this program but a little smarter, it was a quick thing I did so I could quickly port existing puzzles.

While I am on this thought If anyone offers to help translate I will make it easier to provide translations of menu items, obviously 1) graphics with text would have to be redone. 2) Since I am using SF2DFont it will need to be updated to support non ascii characters / and I will need to generate a font that can support non ascii characters. Better to think of this now than later since all of the text is hardcoded into the binary right now.
 

TricksterGuy

Well-Known Member
OP
Newcomer
Joined
Jan 16, 2016
Messages
81
Trophies
0
Age
34
Location
California
XP
190
Country
United States
  • Like
Reactions: UltiNaruto

UltiNaruto

Well-Known Member
Member
Joined
Sep 4, 2015
Messages
182
Trophies
0
Age
27
XP
168
Country
France
Grid fixed on 0.1.2 nondebug. But the panel still corrupts when you open a bbb file. And nothing on output.
And debug version seems to work perfectly so I'll use this version for now.
Thanks for fixing most of the bugs.
There's one bug left. It crashes when you exit after making some puzzles.
 
Last edited by UltiNaruto,

TheWolfBunny

Member
Newcomer
Joined
Jul 17, 2016
Messages
23
Trophies
0
Age
25
Location
Las Vegas, NV
Website
twitter.com
XP
115
Country
United States
You guys have earned my most heartfelt thanks and respect. Thank you so much for using my block sets!!! And a big thank you for crediting me! I'm sure you'll all do a great job finishing this! Who knows, this might be available up for grabs on the Nintendo eShop!! And @SRKTiberious? You did a beautiful job creating that 16x16 '3D' Block set. I hope you won't mind if I used it for 'Next-Gen' Puzzle League fangames.
As a token of my thanks, in case if you were looking for the blank block from Pokemon Puzzle Challenge, the search is over:
pokemon_puzzle_challenge___blank_block_by_thewolfbunny-daah9bs.png


Also, as another addition to the block family, can I recommend adding the block set from Pokemon Puzzle League/Panel de Pon GC to even things out?
n64_tileset_by_thewolfbunny-daahb7z.png


And don't worry about the garbage blocks from that game. I got you covered, so you can edit them to make them perfect:
74432.png
 
Last edited by TheWolfBunny,
  • Like
Reactions: NCorp.

SRKTiberious

Well-Known Member
Member
Joined
Sep 4, 2014
Messages
214
Trophies
0
Age
39
XP
354
Country
United States
I appreciate your praise for my work. My process was actually pretty simple: I made a base panel in Blender, joined it to a small armature, and then parented each necessary part to its respective joint: 'Background', 'Panel', 'Symbol', 'Face', and 'Eyes'. Further, I sized it so that each eventual pixel in the finished piece was .1 units in Blender, giving me a scale to work from.

After modeling out the symbols and faces, using the SNES artwork as a guide, I just screenshot each panel and let a macro in Photoshop handle each piece, which ended up pasted into the finished sheet.

I used the same technique to create both the bonus markers and the '3D' garbage blocks shown earlier in the thread. Except in the latter case, I also had to get the various bits of artwork from Tetris Attack itself in a cohesive whole. That's how I figured out the pattern they used to build with, leading to the impossible block (TA caps at x12 thickness) constructed in the 3D set. The garbage block set I called 'GBC', though, was a straight 2D edit of the SNES artwork to try bringing it more in line with the 3-color scheme.

I still have those models, so if this were to go onto, say, the Wii, as a fully-3D version, it would be possible. I'd just have to knock the triangle counts down a little bit, and probably just model out the various garbage blocks to make it easier to deal with.


Now that my explanation's out of the way, have you researched the fall speed of panels at the various difficulty levels? I'd do it, but ZSNES apparently 'increases frame' at 30 FPS rather than 60 (if done on a flashing match, the flash doesn't change between frame increases), meaning I can't get accurate data. If this has been documented anywhere, though, it would be useful to have to make this version much more accurate.
 

TricksterGuy

Well-Known Member
OP
Newcomer
Joined
Jan 16, 2016
Messages
81
Trophies
0
Age
34
Location
California
XP
190
Country
United States
Grid fixed on 0.1.2 nondebug. But the panel still corrupts when you open a bbb file. And nothing on output.
And debug version seems to work perfectly so I'll use this version for now.
Thanks for fixing most of the bugs.
There's one bug left. It crashes when you exit after making some puzzles.

The debug version is only a temporary one time thing, and judging by it not crashing in the debug build it's a heisenbug. I will have another look later but since you say its working its a lower priority.

You guys have earned my most heartfelt thanks and respect. Thank you so much for using my block sets!!! And a big thank you for crediting me! I'm sure you'll all do a great job finishing this! Who knows, this might be available up for grabs on the Nintendo eShop!! And @SRKTiberious? You did a beautiful job creating that 16x16 '3D' Block set. I hope you won't mind if I used it for 'Next-Gen' Puzzle League fangames.
As a token of my thanks, in case if you were looking for the blank block from Pokemon Puzzle Challenge, the search is over:
pokemon_puzzle_challenge___blank_block_by_thewolfbunny-daah9bs.png


Also, as another addition to the block family, can I recommend adding the block set from Pokemon Puzzle League/Panel de Pon GC to even things out?
n64_tileset_by_thewolfbunny-daahb7z.png


And don't worry about the garbage blocks from that game. I got you covered, so you can edit them to make them perfect:
74432.png

Nice, thanks for the reply! And well I have a long way to go, the engine isn't there yet. I do thank you for all of the panel graphics it did kickstart my first couple of demos. I started this project sometime near the end of 2015, porting existing code I had for this that was a game for the gameboy advance code which was written in 2008.

I think it would be some trouble to get it on the eshop, I would need to sign Nintendo's NDA to get the SDK, learn how their tools work (I heard Windows only... I develop on linux) and buy a dev kit I heard $2000. Well my biggest concerns are the implications of signing the NDA and contributing to homebrew development.


I appreciate your praise for my work. My process was actually pretty simple: I made a base panel in Blender, joined it to a small armature, and then parented each necessary part to its respective joint: 'Background', 'Panel', 'Symbol', 'Face', and 'Eyes'. Further, I sized it so that each eventual pixel in the finished piece was .1 units in Blender, giving me a scale to work from.

After modeling out the symbols and faces, using the SNES artwork as a guide, I just screenshot each panel and let a macro in Photoshop handle each piece, which ended up pasted into the finished sheet.

I used the same technique to create both the bonus markers and the '3D' garbage blocks shown earlier in the thread. Except in the latter case, I also had to get the various bits of artwork from Tetris Attack itself in a cohesive whole. That's how I figured out the pattern they used to build with, leading to the impossible block (TA caps at x12 thickness) constructed in the 3D set. The garbage block set I called 'GBC', though, was a straight 2D edit of the SNES artwork to try bringing it more in line with the 3-color scheme.

I still have those models, so if this were to go onto, say, the Wii, as a fully-3D version, it would be possible. I'd just have to knock the triangle counts down a little bit, and probably just model out the various garbage blocks to make it easier to deal with.


Now that my explanation's out of the way, have you researched the fall speed of panels at the various difficulty levels? I'd do it, but ZSNES apparently 'increases frame' at 30 FPS rather than 60 (if done on a flashing match, the flash doesn't change between frame increases), meaning I can't get accurate data. If this has been documented anywhere, though, it would be useful to have to make this version much more accurate.

Yeah I noticed the same, there must be some option within ZSNES I will have a second look shortly.

Not as of yet, I'm getting sick of sound programming/debugging now so I will post a new build sometime today with sound with some issues, hopefully a break from working on sound will do some good.

Actually, now I'm curious: Does the puzzle editor take into consideration trick-flips when counting the steps involved to solve the puzzle? I've seen some pretty crazy puzzles:

So from this video there exists a puzzle editor and puzzle injector for puzzle league games do you know where such a tool exists? It would immensely help me in getting the engine to be more accurate.
 

CrispyYoshi

Well-Known Member
Member
Joined
Mar 20, 2010
Messages
1,539
Trophies
0
XP
1,014
Country
United States
So from this video there exists a puzzle editor and puzzle injector for puzzle league games do you know where such a tool exists? It would immensely help me in getting the engine to be more accurate.
Sorry, I actually don't know where that came from. The friend who showed me that video suggested it might be manually hex-edited into the game. Maybe you could try asking the creator of those puzzles?
 

TricksterGuy

Well-Known Member
OP
Newcomer
Joined
Jan 16, 2016
Messages
81
Trophies
0
Age
34
Location
California
XP
190
Country
United States
Yeah sorry no build with sound yet, its getting late and I just playtested everything and I hear nothing but a garbled mess...


Also unrelated If anyone wants to try their hand at a 3d banner for this

https://gbatemp.net/threads/tutorial-creating-3d-banners-from-3d-models-for-cias.433783/

Edit: And I just found out where in RAM a currently playing puzzle is stored. Time for some fun~

Edit 2: I've been reverse engineering Tetris Attack's puzzles, I have learned how the puzzles are stored and where they are stored. Once complete I should be able to have the puzzle exporter patch TA with custom puzzles.
 
Last edited by TricksterGuy,
  • Like
Reactions: CrispyYoshi

TricksterGuy

Well-Known Member
OP
Newcomer
Joined
Jan 16, 2016
Messages
81
Trophies
0
Age
34
Location
California
XP
190
Country
United States
After a couple of days of me banging my head and learning 65816 assembly, I've managed to reverse engineer how puzzles are stored in Tetris Attack

As such I have written a tool to allow you to dump and inject "puzzles" (that is puzzles and any preset block configurations as shown in demos) from the original tetris attack, since it is very hard to modify by hand due to the compression used to store them (the very first puzzle is 27 bits of data and no bits are wasted). Then you can use bottomless-block-builder to edit them and then inject them back into the game using the tool.

Issues

* The puzzles in the video CrispyYoshi linked earlier causes the game to lock up, so I can conclude the author of that video made some more changes to the game's code to allow for height 12 puzzles.

* (Minor) some panels will change color due to the different ordering of panels between TA and my version

TA: red 1 green 2 cyan 3 yellow 4 purple 5 blue 6 ! 7
BBB: green 1 purple 2 red 3 yellow 4 cyan 5 blue 6 ! 7

That is...
greens will become reds
purples will become greens
reds will become cyans
cyans will become purples


Download
You can find the code here, its in ruby because I was writing a lot of code testing things before I knew it I had implemented what I wanted the tool to do.
You will need the ruby interpreter to run this. Just run the following command

ruby injector.rb tetris_attack_rom dump|inject

dump will dump all of the data to the ta folder
edit the puzzles in bottomless-block-builder and save them do not delete any of the files

inject will take all of the puzzles from the ta folder and update the rom


And as a proof of concept attached is an ips file that modifies the first puzzle.


Anyway I wrote this to play with tetris attack's engine with custom block configurations.
 

Attachments

  • tetris_attack.ips.zip
    2.3 KB · Views: 182
  • Like
Reactions: mysterypaint

mysterypaint

Member
Newcomer
Joined
Jul 18, 2016
Messages
11
Trophies
0
Website
twitter.com
XP
122
Country
United States
After a couple of days of me banging my head and learning 65816 assembly, I've managed to reverse engineer how puzzles are stored in Tetris Attack

As such I have written a tool to allow you to dump and inject "puzzles" (that is puzzles and any preset block configurations as shown in demos) from the original tetris attack, since it is very hard to modify by hand due to the compression used to store them (the very first puzzle is 27 bits of data and no bits are wasted). Then you can use bottomless-block-builder to edit them and then inject them back into the game using the tool.
Incredible work; I'm excited to see the changes this tool will do for your engine. Good luck with the testing! Also, thank you for sharing the source for the TA block-editing tool.
 
Last edited by mysterypaint,

TricksterGuy

Well-Known Member
OP
Newcomer
Joined
Jan 16, 2016
Messages
81
Trophies
0
Age
34
Location
California
XP
190
Country
United States
And got it. Just had to change one bit in the game's code.

I will post another ips file later, but if you can't wait just change offset 0x4A6F9 from 0C to 0D

EDIT my ruby script now handles doing the above modification for you.


And Geiger's debugger is awesome!

ZGHESTE.png
 
Last edited by TricksterGuy,

SRKTiberious

Well-Known Member
Member
Joined
Sep 4, 2014
Messages
214
Trophies
0
Age
39
XP
354
Country
United States
So, playing around a bit more, I've found that there's a variant of 'Exploding Lift' in this game (0.1.5 version still)... You can hold R and it will raise the stack so long as blocks are falling

It also glitches out the Chain counter, so you can get counts that should be impossible, and even continue chains when they should stop.

I've got a replay that takes advantage of this to get a 22 chain, which requires at minimum 69 blocks (playfield tops out at 67 or higher with full packing), so shouldn't be possible.

Edit: Also, since you found the block numbering is different, are you going to consider reorganizing them in yours to match TA's? I figure it would only require changing what numbers are assigned to what columns, so it might not be too hard to do?

Edit 2: So, I've been looking at the NCCH product codes with JKSM and doing research on what everything means... and based on what I can see, I'd like to suggest the code be changed to "CTR-N-JB3A", if you want to follow the Nintendo format.

Broken down, here's what the new code would identify:
CTR - o3DS title
N - Download-only
J - 'Normal eShop Title' (though H is free as well, in case we want to make that a homebrew designator)
B3 - Game Identifier (B3 for 'BBB', obviously)
A - All regions
 
Last edited by SRKTiberious,
  • Like
Reactions: UltiNaruto

TricksterGuy

Well-Known Member
OP
Newcomer
Joined
Jan 16, 2016
Messages
81
Trophies
0
Age
34
Location
California
XP
190
Country
United States
So, playing around a bit more, I've found that there's a variant of 'Exploding Lift' in this game (0.1.5 version still)... You can hold R and it will raise the stack so long as blocks are falling

It also glitches out the Chain counter, so you can get counts that should be impossible, and even continue chains when they should stop.

I've got a replay that takes advantage of this to get a 22 chain, which requires at minimum 69 blocks (playfield tops out at 67 or higher with full packing), so shouldn't be possible.

Edit: Also, since you found the block numbering is different, are you going to consider reorganizing them in yours to match TA's? I figure it would only require changing what numbers are assigned to what columns, so it might not be too hard to do?

Edit 2: So, I've been looking at the NCCH product codes with JKSM and doing research on what everything means... and based on what I can see, I'd like to suggest the code be changed to "CTR-N-JB3A", if you want to follow the Nintendo format.

Broken down, here's what the new code would identify:
CTR - o3DS title
N - Download-only
J - 'Normal eShop Title' (though H is free as well, in case we want to make that a homebrew designator)
B3 - Game Identifier (B3 for 'BBB', obviously)
A - All regions

1) Alright I'll look into it

2) It would be a chore you are correct in that some ids need to be changed however all graphics would need to have some column swaps as well, I could write a program to do this for me. Or I could either silently convert the IDs in game which is silly.

I will do this some point in the future, but as of now its not a big deal

3) I don't think those codes do anything special.

Also my injector script only appears to work on a Tetris Attack game (sized 1 mb), I tried on panel de pon (sized 1.6 mb) and it froze at startup heh...
 
Last edited by TricksterGuy,

SRKTiberious

Well-Known Member
Member
Joined
Sep 4, 2014
Messages
214
Trophies
0
Age
39
XP
354
Country
United States
Well, now this is interesting...

There appears to be art for multi-layer grey garbage blocks that goes unused in Tetris Attack.

I'm working on trying to get a x2, x3 and x4 built so I have an idea what 16x16 pieces would be necessary.

If I can do so, would you consider this scrapped idea for the Vs. mode in this game?

Edit: Removed images.
 
Last edited by SRKTiberious,

TricksterGuy

Well-Known Member
OP
Newcomer
Joined
Jan 16, 2016
Messages
81
Trophies
0
Age
34
Location
California
XP
190
Country
United States
Alright cool I will consider it. That definitely would have made the game harder I suppose matching 4 ! blocks would result in a height 2 garbage block, 5 ! for a height 3, 6! for height 4 etc

Hopefully I will have some time to work on this over the weekend, work has been slow
 

SRKTiberious

Well-Known Member
Member
Joined
Sep 4, 2014
Messages
214
Trophies
0
Age
39
XP
354
Country
United States
Okay, so I had to essentially redo the garbage blocks to add the multi-layer grey garbage. Here's the new sets:

[images removed]

I decided to make all the multi-layer grey blocks their own images because it's a pain in the ass to try actually assembling them by block, unlike the normal-colored garbage. I've also made thicknesses up to 7 (9 ! blocks cleared at once; requires a chain to accomplish). I think that the absolute top would be 10-layers (requiring 12 total and a special setup), but I don't know how many ! panels there would be at any one time. I'll have to ask someone that has knowledge of the game's mechanics.
 
Last edited by SRKTiberious,
General chit-chat
Help Users
    H @ havefeith: Goofball. (Honestly speaking, whoever decided that meant something other than "silly person"...