Editor, Experienced Forum User, Published Author, Skilled player
(1407)
Joined: 3/31/2010
Posts: 2087
I decided to pick up the demo and make a full TAS of this game.
Link to video
WIP completing stage 1
Input File
Two questions:
1.Is this game publishable?
Super Bat Puncher is a homebrew game on the NES. A demo containing two levels has been released all the way back in 2011, but since then, very little has been heard from the game. The developers have since moved to other projects, which leads me to believe that the game is cancelled. As of now, the Demo is all that exists of Super Bat Puncher, and I do not want to wait any longer. The game definitely is TAS-worthy material, and I think it'd be a big shame if it couldn't be on the site because of the promise of a full version that may never happen.
EDIT: I've recieved word from the game's dev, who has confirmed the game is pretty much dead at this point.
2.When should I end the game?
After you defeat the second boss, the credits trigger. After the end, gameplay resumes and you can go to an area in the game to compelete a difficult bonus stage to get an extra item (see RaijinXBlade's old TAS). Most speedrunners I've seen (all three of them) exclude the bonus stage. Including the extra stage might add extra entertainment to the run, at the cost of having to sit through an unskippable credits sequence for a minute.
Yeah.
Editor, Experienced Forum User, Published Author, Skilled player
(1407)
Joined: 3/31/2010
Posts: 2087
I'm inclined to agree with Warp. 8 minutes are a long time, but I feel that having a "legit" run takes precedence here. While it's not quite the same, we've published runs with minutes worth of tape loading at the beginning before, when there would've been ways to avoid it.
Instead, there may be a notice for viewers informing them to skip ahead, or the encode may fast-forward during the section. Personally, I'm not familiar with the game either, but from the looks of it, it seems like you can move the character around, which, well, is better than nothing.
Editor, Experienced Forum User, Published Author, Skilled player
(1407)
Joined: 3/31/2010
Posts: 2087
This was a pretty cool TAS. The mid-air jumps and wall glitches were apparent and allowed for some pretty neat shortcuts. The game itself is pretty slow paced, but you made the best out of it you could.
Overall, I'm voting yes for entertainment. That rendition of the Pink Panther theme did it for me.
Editor, Experienced Forum User, Published Author, Skilled player
(1407)
Joined: 3/31/2010
Posts: 2087
MUGG wrote:
Ok so I have a question.
I'm making a game in Bizhawk lua and it's going to be a grid-based system where map tiles are 0 or 1 (nothing or walls). The character has a hitbox of a given width and height. My collision check checks any map tile that the hitbox covers.
My question is, how should I code the wall ejection? I've tried a few things but I can't seem to make it good. Any ideas?
https://i.imgur.com/QxDkhiD.png
From what I know, you generally want to move the character in one axis first and check for collision along that axis, before looking at the other axis. If you move the character entirely first before checking for collision, you generally run into trouble.
This means that when the character is moving right and up, you want to check what tiles the right and up edge of his hitbox overlap with. If you notice a collision, you can move the character to the edge of the previous tile.
It's solid, but you'll get very harsh zipping if you do get the player embedded into the wall. There's probably better and smoother ways to do it.
(oh, also, this does no motion interpolation between frames - if your character moves fast enough, there's nothing stopping you from clipping through. you can counteract this by making sure your character never moves more than a tile's width in one frame or on each frame, you make sure to check each tile between the character's base position and his destination)
Editor, Experienced Forum User, Published Author, Skilled player
(1407)
Joined: 3/31/2010
Posts: 2087
I honestly think the timing discussion is a bit of a moot point, because whether or not NTSC is faster than PAL should not be what the judgement hinges upon. TASvideos is not about picking the fastest version of a game at any cost, and I'm glad for that.
Instead, in my opinion, whether or not PAL SMB should be accepted and what version should be preferred should come down to the quality of the port itself, its entertainment factor and what version is considered to be 'definitive' by the audience.
You can certainly argue many different ways with respect to these criteria, or also argue in favor of having two separate categories, but I don't think the time difference should be the sole determining factor here.
Editor, Experienced Forum User, Published Author, Skilled player
(1407)
Joined: 3/31/2010
Posts: 2087
Regarding category bloat, I generally think that separating a game into 'main' categories and 'side' categories would be a good route to go. Main categories would be your staple any% and 100% runs, whereas side categories would be more inclusive and contain oddball goal choices and the like. Main categories would have far stricter standards for acception and publication and would in turn also be featured more prominently on the site, whereas side categories would be shunted off into game-specific pages.
In the case of SMB, this would mean that any% and warpless would be main categories, while things like PAL, max coins, FDS -3 and whatever you have would be considered side categories. Having to draw the line where movies would go would be kind of arbitrary, but ultimately so is the decision on whether a run should go to vault or moons currently.
I do admit that this idea does not map well to our current concept of Vaults and Moons, which may preclude it from happening, since the vault discussion is a different topic entirely. I just think it could be a potential way to go going forward.
Editor, Experienced Forum User, Published Author, Skilled player
(1407)
Joined: 3/31/2010
Posts: 2087
I was trying to find something funny to say about this submission but screw it.
If you're looking for feedback, upload to userfiles.
If you didn't even try, why did you submit this.
Editor, Experienced Forum User, Published Author, Skilled player
(1407)
Joined: 3/31/2010
Posts: 2087
Wow, I would not have expected the submission for this run to arrive so soon.
Of all the runs on the site, I never thought I would see an improvement to the Castlevania run. Simply beautiful work, I enjoyed every second of it. Who would have thought that axes, of all subweapons, would be the most effective against a boss for once?
Yes vote, natch.
Editor, Experienced Forum User, Published Author, Skilled player
(1407)
Joined: 3/31/2010
Posts: 2087
I find history very interesting and very enlightening to answer many questions about the world's current political state, but sadly it's a nerd topic for nerds, so I can't really talk about it with anyone.
Editor, Experienced Forum User, Published Author, Skilled player
(1407)
Joined: 3/31/2010
Posts: 2087
Seems like it should be reasonably easy to do using Lua.
Language: lua
local onEvenFrame = false
while true do
onEvenFrame = not onEvenFrame
local keys = input.get()
if keys.enter then --your keyboard key here
local buttons = { start = onEvenFrame }
joypad.set(1, buttons)
end
emu.frameadvance()
end
Editor, Experienced Forum User, Published Author, Skilled player
(1407)
Joined: 3/31/2010
Posts: 2087
FWIW, I don't think this should obsolete the current publication. SMB is one of the most well-known speedgames there is, and people expect to see the version they're familiar with. The PAL version, however, has way too fast music, which just sounds incredibly offputting. It might also come across as cheating to some to obsolete a run as optimized as the current SMB run not by any improvements or new tricks, but by switching the version.
Hence I propose publishing this as a separate category (fuck we did it for super metroid) or not at all, as sad as it would be to reject a submission like this.
Editor, Experienced Forum User, Published Author, Skilled player
(1407)
Joined: 3/31/2010
Posts: 2087
I haven't seen the fall through floors glitch before alright. It's such a shame you couldn't use it in the 4-2 warp zone to save time. I'm voting yes for technical quality and entertainment, although I'm not sure if PAL warrants a separate publication from all the other categories.
Editor, Experienced Forum User, Published Author, Skilled player
(1407)
Joined: 3/31/2010
Posts: 2087
About finding information, there's lots of resources on many systems online, such as Nesdev for NES, etc. Try to find as many resources as you can on the system you're trying to emulate, hoover them up.
You can also study the source code of existing emulators to get some pointers.
Be warned though that not all documentation is correct or complete, and emulators may take shortcuts or emulate things flat out wrong as well, so be sure to use your head.
Editor, Experienced Forum User, Published Author, Skilled player
(1407)
Joined: 3/31/2010
Posts: 2087
I should preface what I say with that I've only really worked with NES emulation, which is admittedly a very simple console. So my experience is somewhat limited.
Emulation is very large topic, and writing an emulator is a pretty difficult undertaking. There are a bunch of different facets to consider if you want to get into emulator coding.
To begin with, you should have an impeccable grasp on the system you're trying to emulate. Each console is comprised of many different components, such as the CPU, RAM, Video Processor, Control Input and others. You should know exactly what components your system needs to emulate, and how you would go about emulating each and every single one of them. Start by asking how you would represent something like RAM in your own emulator. How would you emulate the CPU state and the CPU opcodes?
For me, personally, I started homebrewing NES games (or trying to, anyhow) long before I even thought about writing an emulator. Having this kind of inside perspective before going in helps immensely.
To actually build a functional core, you need to connect all of your components to interface like they would on real hardware. How do you construct your own emulator architecture and timing model around the system architecture? On consoles like the NES, this is relatively simple, on more complex systems, it's not.
If you want to write an actually usable emulator, you're gonna need some kind of interface for the user to interact with. There's a bunch of different problems to solve here, like writing a GUI, loading a ROM, getting user input, getting visual and audio output or writing advanced features like save states, movie recording or debugging tools. These problems are all fairly distinct and don't have much to do with emulation directly. Instead, they are more about your ability to program a multimedia application in general.
Optimization is also a pretty large concern for more advanced emulators, but in the beginning, I wouldn't focus on it.
Personally, if you want to start, I'd recommend by starting out simple and looking at a system such as the NES or GameBoy, as these are not only very simple systems, but they are very well understood and documented also. You can find many resources on emulating them online.
Obviously, being adept at a suitable programming language like C, C++ or others is vital as well.
You can check out the source code of existing emulators also if you're stuck, but be warned, some codebases are hell.
I hope this was kinda helpful.
Editor, Experienced Forum User, Published Author, Skilled player
(1407)
Joined: 3/31/2010
Posts: 2087
What a game. Truly Genesis does what Nintendon't.
Anyhow, good job on coming back to really max out this game. It really shows how much you've improved each section. It just sucks that you constantly have to struggle to keep your momentum. Sadly, it really kills the flow watching for me. Because of this, I still have to vote 'Meh' for entertainment, despite all the improvements.
I'm kind of reminded of the SMW NES pirate which has a lot of similar problems to this game. In general, there's enough Mario pirates out there to choke a horse, and I'm not sure if, of all them, this is the one to publish.
Editor, Experienced Forum User, Published Author, Skilled player
(1407)
Joined: 3/31/2010
Posts: 2087
Is it even possible to reason over the state of a variable over the course of the execution of a program P? To me, this sounds like well in the realm of undecidability.
Anyhow, your best bet is to figure it out by observation, either by going over the disassembly with your eyes or by looking at the value during runtime. I don't think there's any shortcuts for it.