Editor, Experienced Forum User, Published Author, Active player
(296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Here is something I have been working on for the most recent few months.
Link to video
It is just a programming hobby project.
Sure, it can run TASes, but it's just a hobby project. And it's only 940 lines of source code.
Examples of it running TASes:
― Rockman TAS by Bisqwit (tasvideos movie 726)
― Metroid TAS by Lord Tom (tasvideos movie 1144)
― Part 2/2 which demonstrates this particular revision of the emulator.
I only showcase a maximum of 15 minutes long TASes because that's what my account is capped to. But it does sync with e.g. Mega Man 2 by Shinryuu (24 minutes)...
It does not have savestates yet. And in fact, it does not even have an UI yet. It reads joypad input from a Famtasia movie file; it does not react to any other inputs. But due to its architecture, adding savestates would be trivial.
It does not have many features; for example, iNES mapper 4 support is completely missing so far (which means e.g. SMB3 won't run), but those that are implemented are fairly accurate. It scores fewer failures in Blargg's tests than FCEUX does, for those parts that are implemented (mostly CPU & PPU related tests).
The RAM & waveform displays shown on these videos are non-realtime add-ons; they are not part of the 940-line source code.
Editor, Experienced Forum User, Published Author, Active player
(296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
No, for the purpose of shortening URLs one should create a shortened URL scheme, spefically linking "this corresponds to this". For example, in one of the projects developed at where I work, both this and this are URLs created with an algorithm that does not expose database-internals. If some day the platform of implementation changes, or the database layout is changed radically, the URLs will still continue to be valid, because they do not expose anything that is in any way tied to how the database works. What we have at TASVideos is just me having been lazy.
Editor, Experienced Forum User, Published Author, Active player
(296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
If it were up to me I would suddenly jump to movie in whim just to stop this kind of questions (or make them seem insignificant in comparison) ;-)
There is a general development principle that database-internal numbers should not be exposed in public interface. According to that principle, the URLs referring to movies should be like /TAS/SMB1byKlmz/v1 rather than /1330M.html . But the fact is that these numbers are a handy way to refer to individual movies. I would just prefer that people take it as that, a handy way to refer to individual movies, without trying to assign any particular meaning to those numbers; their magnitude or their relative ordering.
Yes, the database assigns the number with a certain algorithm, in a successive sequence, but the numbers may also skip, and have irregular sequences depending on a (small) number of issues.
Editor, Experienced Forum User, Published Author, Active player
(296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Though the soundscape in this movie is a little bad, especially with the puzzles completed so bad, I remember playing this game once a long time ago (around or prior the time it was published in Finland) and found it very challenging. This TAS is therefore very interesting to watch for a few minutes and very well made.
Vote=yes.
Editor, Experienced Forum User, Published Author, Active player
(296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Good thing you found them: I had to see it myself, as well. I had no idea what my anwers were. I guess I had a rather generic answer. If I had to answer today, I am not sure what my answer would be -- whether it would be different. I've grown fond of the so called "old" testament, i.e. Hebrew writings, lately, and I find usually myself reading more of it than the "new" testament. Just recently I have been fascinated with Ezekiel 20, for instance.
Today, I'd say Genesis. It contains everything important; everything that comes thereafter is already shown in Genesis. Or so I hear -- I am only beginning to find the extent of the veracity of that claim. But I cannot possibly see any other part of it as more important...
Editor, Experienced Forum User, Published Author, Active player
(296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Interesting trivia: The theme song of Jenka, the old hag, is or begins as actually a Finnish traditional song called "letkajenkka", which popularized the rhythm / dance known in Finland as "jenkka".
Editor, Experienced Forum User, Published Author, Active player
(296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Bubbler is cool, but it requires some backtracking to acquire it in the first place, and secondly, it's not so easy to define which weapons can or can not be used in addition to Bubbler. "Before you acquire Bubbler, use anything at your disposal, but once you get Bubbler, use it and only it" is rather arbitrary.
The subtitles in the Youtube video have been fine for me so far.
Editor, Experienced Forum User, Published Author, Active player
(296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
I just began playing the game, Cave Story, for the first time, in order to enjoy this TAS.
I played until what equals the first 24 minutes of the TAS, and then watched the TAS (until that point, so far).
Even with the language difference considered, I can agree that the TAS becomes a whole lot more enjoyable after you've played the game yourself. I can appreciate the work put into it, and how efficient it is. Obvious yes vote.
[Edit: Oh, it was published while I was playing. Missed that.]
Editor, Experienced Forum User, Published Author, Active player
(296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
For instance on my laptop, Portal 2 does not allow 640x480 full-screen; does allow it in windowed mode though.
EDIT: For the record, I don't see any derailing whatsoever.
Editor, Experienced Forum User, Published Author, Active player
(296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Wonder if there is a mathematical stable point (equilibrium) between the two curves formed by inconvenience caused by the gadget's age and the inconvenience of knowing how much cheaper you could get the same gadget anew now than when you bought it.
Someone should study it.
Editor, Experienced Forum User, Published Author, Active player
(296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
And the same tale continues.
I particularly like how it segues from official-looking text into something that looks like SMS speak on first glance, and back, in the same message.
It is also interesting how they cut the chase. Instead of going back and forth a few messages luring the victims progressively deeper into the "send-us-some-money-so-we-can-send-you-millions" scheme, this one sets all the cards on the table in the first round. The spurious "hide quoted text" in the middle is also quite random.
Editor, Experienced Forum User, Published Author, Active player
(296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Yes, Castlevania 2 and TMNT.
EDIT: After watching TASes, I think I may have been mistaken about TMNT both. I wonder why is that. Is it my memory that is at fault is it the emulator(s) that is/are at fault? Or did the authors just do very good job at minimizing the kind of lag that delays even the music? Or is there just a certain kind of lag that produces the music delay, maybe when it has very much PPU data to update (fast scrolling) and not when there is lots of AI to run?
Editor, Experienced Forum User, Published Author, Active player
(296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
The CPU runs at about 1789800 cycles per second. It takes a minimum of 12 cycles to reprogram the signal generator of one channel for a new wave length. Which means it can be done about 149150 per second. Even if it takes 10 times that (120 cycles), it's still 14915 times per second; an interval of 67 about microseconds.
Of course, this is assuming that the program will do absolutely nothing else than reprogram the signal generators in an infinite sequence.
Actual games usually update the sound in one of these three places: The NMI, which runs at the same rate as the framerate of the console (about 60.098 per second); the APU-generated IRQ, which is about 60.000 times per second, or in the main code after polling for the NMI flag (60.098 times per second, minus lag).
Editor, Experienced Forum User, Published Author, Active player
(296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Well, take Rockman 1 cartridge for example (I am well familiar with it).
The ROM is divided into eight 16-kilobyte banks, for a total of 128 kilobytes.
The address bus from the CPU is 16-bit. (15-bit in practice, because $0000-$7FFF are used for other purposes than ROM.) Address space $C000-$FFFF is always hard-wired to bank 7. The address space $8000-$BFFF can be switched: It can be mapped to any of the eight banks. The mapping can be changed at any time, but doing so requires routing through code that is in the fixed bank ($C000-$FFFF).
This is the contents of the eight banks in the Rockman 1 ROM:
$8000-$BFFF, bank 0: Level data for Cutman; Wily1.
$8000-$BFFF; bank 1: Level data for Iceman; Wily2.
$8000-$BFFF; bank 2: Level data for Bombman; Wily3.
$8000-$BFFF; bank 3: Level data for Fireman; Wily4.
$8000-$8FFF; bank 4: Level data for Elecman; Startup screen data.
$9000-$BFFF; bank 4: Music engine; Song data; Sound effect data.
$8000-$8FFF; bank 5: Level data for Gutsman, End demo data.
$9000-$BFFF; bank 5: Program code.
$8000-$BFFF; bank 6: Program code; graphics data.
$C000-$FFFF; bank 7: Program code; program data.
For the topic, the relevant bit is in the sound engine.
It occupies the memory area $9000-$BFFF (12 kilobytes) of bank 4.
The remaining 4 kilobytes of bank 4 is occupied by Elecman level data and startup screen data.
The sound engine is limited to one bank for simplicity and speed. Bank switching is expensive, because it requires a lot of operations, and you can only execute about 2273 cycles of code during the NMI (majority of which is spent in updating PPU data for graphics, and during which the music is also updated for reasons of constant playback speed).
Within the sound engine, the ROM space is spent as following:
$9000-$9990: Program code
$9991-$9A5F: Period table (translates a seminote index into a wavelength)
$9A60-$9AC5: Song and sound effect data pointers
$9AC6-$B897: 16 music tracks (average length: 477 bytes per song: shortest is 149 bytes, longest is 1163 bytes)
Not really humongous. Sure it is not drawn to the last byte, but the space is not really wasted either. Remember that for each ROM chip they had to include in the cartridge, the ROM chip would have to be included in each copy of the cartridge sold, which increases the price. ROM was not cheap back then.
For the reference, the sound engine not only has its dedicated nicely encapsulated "module" within the ROM, it also has its dedicated nicely encapsulated region of RAM. It is allocated as follows:
$0E0-$0F4: Various pointers and status flags
$500-$51E: Status for channel 1 (31 bytes).
$51F-$53D: Status for channel 2.
$53E-$55C: Status for channel 3.
$55D-$57B: Status for channel 4.
The per-channel status includes information such as current pointer to song data; current wavelength; various counters for e.g. vibrato, volume envelope, playback speed and so on.
Editor, Experienced Forum User, Published Author, Active player
(296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Re: High speed arpeggios.
Arpeggio requires more room from the ROM than no arpeggio.
I can immediately think of two ways to implement arpeggio:
-- List each alternating note/pitch. If it changes 40 times, list 40 notes. This increases space consumption very rapidly.
-- Implement program code to perform arpeggios. Alter the music compression format in a manner that allows expressing arpeggiations. In the music decoder implement program code to detect and dispatch arpeggio commands.
Both of these approaches increase the ROM size by a nonzero amount.
Also, composers may feel uncomfortable working with arpeggios. Arpeggio introduces a feeling of a rapid rhythm and energy into the song, which may be not what the composer has in mind.
Another factor is that compared to many contemporary systems, the NES had relatively a generous number of sound channels (and range), which allows a more natural composing workflow. The composers did not see need for arpeggio tricks; it may have been seen as unprofessional, compared to pure melodic music.
Facing these thoughts, room for the music engine was better invested in vibrato functionality than in rapid-arpeggio functionality.
Disclaimer: This is entirely unsourced analysis.
Super Mario Bros. did use rapid arpeggios, but only in sound effects: The mushroom / grow / shrink / pipe-enter sound effects.
Editor, Experienced Forum User, Published Author, Active player
(296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
They say, it's because the meal produces acids in the mouth, that dissolves some of the minerals of the teeth, which do get reintegrated later. Brushing the teeth during before the remineralization is detrimental to the teeth. But brushing them before the meal does not have that harmful effect.
Editor, Experienced Forum User, Published Author, Active player
(296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Are you being ironic? Because what you wrote is exactly the message that I taught when I created this site.
feos, you wrote in a weird style which kind of implies feelings of a deeper meaning than was actually found in the text. The article was rather devoid of actual content, in my opinion, or maybe I just did not understand what was the big deal and somehow skimmed it.
A TAS is about exceeding the expected and delving deep into the unexpected; it is about an aural and visual performance that that increases the appreciation towards the game; it is about entertainment that stimulates the brain in a number of ways.
In a similar manner as performance by experienced and well trained dancers is pleasant to look at and increases the appreciation towards the human body as an artistic device and can take the mind to another realm, so does the extremely well choreographed TAS raise appreciation towards the realm of the game, and lead the human mind towards pondering the intricancies of that realm. An unassisted speedrun can do that too, of course. Demo coders and chiptune composers do that, as well, by exceeding the specifications of the platforms they are using, still yet without breaking them. I guess I did not understand the repeatedly made point about superstitions.
Editor, Experienced Forum User, Published Author, Active player
(296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Wow, this spam is really meta. "So we hear you were scammed. Good news: You can be reimbursed. Just fall into our scam which is exactly the same type of scam we are notifying you of."
Funny details include the mention of torture as means of extracting information.
Editor, Experienced Forum User, Published Author, Active player
(296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Good old Mips!
I found it somewhat a nasty stinger that Luigi and Wario, who were not rescued in the movie, did not even appear get to appear in the ending...
The only thing missing would have been a pan-out to a room where their skeletons are laying, long forgotten.
Editor, Experienced Forum User, Published Author, Active player
(296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
I'm sorry if I step on your territory, but I could provide more accurate information as I'm right now in the process of developing an emulator...
RRA = ROR + ADC
RLA = ROL + AND
ASR = AND + LSR
SLO = LSR + ORA
SRE = ASR + EOR
DCP = DEC + CMP
ISB = INC + SBC
LAX = LDA + LDX
DOP/TOP are indeed aliases to NOP.
There are other illegal instructions but they are mostly rather special cases / irregular.