Emulator Coder, Experienced Forum User, Published Author, Experienced player
(724)
Joined: 2/23/2006
Posts: 682
There's no such word, stop using it.
Why are you controlling P2 separately from P1? In TAS Editor you can create buttons Input for both P1+P2 simultaneously.
Everyone understands what you mean, but you don't seem to understand how games work.
Luck (item) depends on actions of both players, so you must manipulate the luck by controlling both players, not just by controlling P1.
You did not answer my question: how do you control players? Are you using mouse?
No, you only need some patience and determination.
Emulator Coder, Experienced Forum User, Published Author, Experienced player
(724)
Joined: 2/23/2006
Posts: 682
It's easier to just select "2 players" when creating a new project (File->New).
Tell me, how do you "change to P2 for control"? Do you control players by joypad instead of using mouse?
I've debugged the game very extensively (a long ago), and I suggest to use only the trial-and-error method.
Get_Random_A: ; CODE XREF: ROM:DC8C ROM:DD17
; ROM:Get_RandomStatusp ROM:DD4F
; Load_AI_Status:Load_AIStatus_GetRandom
; Get_RandomDirection+12
; Make_Enemy_Shot+F
; Bonus_Appear_Handle:-
; Bonus_Appear_Handle+F
; Bonus_Appear_Handle+28
TXA
PHA
LDA Random_Lo
ASL A
ASL A
ASL A
SEC
SBC Random_Lo
CLC
ADC Seconds_Counter
INC Random_Hi
LDX Random_Hi
ADC Temp,X ; any byte from Zero Page!
STA Random_Lo
PLA
TAX
LDA Random_Lo
RTS
See, the RNG in Battle City uses very special technique of applying the value of any byte from Zero Page RAM to the calculations. So the generated value really depends on everything - on players/enemies/bullets coordinates and properties, on score/hi-score, on various timers and pointers, current music and sound channels, previous bonuses, changes applied to level map, temporary variables remaining from old calculations, etc.
As a result, we get an RNG that is extremely hard to predict, so don't bother planning it ahead, just use trial-and-error to get "good enough" luck. Of course, the more time you spend on the trial-and-error manipulations, the better luck you'll get, but with such an RNG you can never be sure you've got perfect luck.
Emulator Coder, Experienced Forum User, Published Author, Experienced player
(724)
Joined: 2/23/2006
Posts: 682
And I think otherwise. People can borrow and repeat someone else's jokes and antics (ideas on how to entertain) without asking.
If it is a speedrun beating someone else's old record, I would prefer to see at least the same level of entertainment. Instead of having a decrease in entertainment because the game only allows a very limited set of entertainment options (without losing speed), and because the new author was too shy to borrow the old author's dances (instead resorting to usual Left-Right twitching or simply staying still).
Emulator Coder, Experienced Forum User, Published Author, Experienced player
(724)
Joined: 2/23/2006
Posts: 682
Then you're doing it wrong. Being afraid of any challenge is not going to help you learn TASing.
That movie is improvable in terms of speed, because it doesn't take advantage from using the Grenade powerup, and it doesn't use tile-alignment to move tanks faster.
Emulator Coder, Experienced Forum User, Published Author, Experienced player
(724)
Joined: 2/23/2006
Posts: 682
Stop repeating this nonsense. This is not how joypad controllers work.
http://www.ni.com/white-paper/11965/en
Once the latch signal is sent, the data about the state of buttons is freezed untill the whole data about all buttons is read by the game (the voltage from the parallel lines d0-d7 simply does not reach the register anymore, immediately after the register is latched, i.e. switched from parallel input mode to serial output mode).
So either you were holding Left at the moment of sampling, or you were holding Right at the moment of sampling. There's no way to register Left+Right by quickly switching between them.(well, of course in the asynchronous circuits there's always a race condition of propagation delays, so the signal about releasing Left may somehow arrive later than the signal about pressing Right, and the sampling may just happen at this very moment, but it's too improbable and unreliable, definitely not something with which you should justify L+R)
BTW, I entirely support L+R, since I personally had a couple of NES (well, pirate famiclone) pads that allow pressing L+R+U+D by pushing the center of D-Pad.
Emulator Coder, Experienced Forum User, Published Author, Experienced player
(724)
Joined: 2/23/2006
Posts: 682
The problem is, this is not true.
Technically, games are not supposed to handle reset directly, the reset interrupt should be handled by BIOS. It's just that most of old consoles (up to and including 4th generation) don't have any BIOS, instead all games implement the necessary low-level stuff on their own. Nowadays they don't have to do this, and in fact, on modern consoles/PC they even can't do this. So Warp is right about modern games.
As for old games, it's really a matter of perspective. If we were purists, then we might divide the game into "intended gameplay rules" (game designer's idea) and "technical overhead" (programmer's implementation with all the mistakes/limitations/etc), and then of course we have to play within game designer's set of rules, not abusing bugs and not abusing the fact that the game was made for a console where Reset button is handled by the game's own code.
But TASing was never about purism, it was always about the opposite - about handling games as tangible objects (phenomenons), not as something perfect and ethereal (noumenon). So it's fine to abuse the fact that old console games incorporate OS and BIOS functionality. As long as this abusing actually provides some additional entertainment.
The thing I don't like is that we keep using more and more heavy artillery for making the same level of achievements. I liked Pokemon Yellow "Arbitrary code", because the means were adequate to results. But when those heavy and debatable techniques are used for simple speedrunning (decreasing the movie length, but not improving on entertainment), this becomes much less impressive. You know, it's like if Neo was able to kill the Architect and then reprogram the whole Matrix directly just for the sake of dodging bullets. Not cool.
Emulator Coder, Experienced Forum User, Published Author, Experienced player
(724)
Joined: 2/23/2006
Posts: 682
No, it would not work. There's common convention to poll joypad input by "strobing", which is reading input port only once per frame and storing the current state in memory. So it doesn't matter if you manage to press/release any buttons between two strobes, the game will only register those buttons that were held at the very moment of making a strobe.
Emulator Coder, Experienced Forum User, Published Author, Experienced player
(724)
Joined: 2/23/2006
Posts: 682
I'll throw a weak Yes vote, since I liked the game back in childhood. Although, yeah, it's not very suitable for TASing. But, fiskerN, did you try to beat current 2P record?
Only if it's faster than 2P run, so it can obsolete it in Vault.
Emulator Coder, Experienced Forum User, Published Author, Experienced player
(724)
Joined: 2/23/2006
Posts: 682
I can't believe anyone spent 6 hours just recording and never had to switch to Read-Only (e.g. in order to rerecord a segment from a frame for which he doesn't have a savestate, or in order to check some finished parts). This would be ridiculously ineffective setup, you simply can't make a good TAS this way.
Emulator Coder, Experienced Forum User, Published Author, Experienced player
(724)
Joined: 2/23/2006
Posts: 682
Well, the huge difference is that our bots are game-specific and heavily engineered, while that guy found an almost reliable criterion (at least for a spoof research) which appears to work for many games (albeit not very well), and that's what's impressive about it. The whole thing is about aestetics, while bots are about achieving actual results.
Emulator Coder, Experienced Forum User, Published Author, Experienced player
(724)
Joined: 2/23/2006
Posts: 682
I'm not going to argue against the decision.
This sentence sounds obvious, but it is not true.
It isn't the right topic to discuss it though. But in short, while making a TAS you balance between short-term and long-term criteria of optimality. If you only look at the nearest frames, you'll quickly degrade into greedy decisions (see greedy algorithm). So, to remain clever you must rewatch/retest nearest segments and analyse middle-term results as often as the situation requires, instead of adapting to emulator pace.
I know what you mean, sometimes you have to do a little push to help people overcome laziness. It's just that administration often becomes too enthusiastic in this kind of coaching.
BTW, those new browsers also provided new features like tabbed interface (in addition to the stuff only useful to web developers). So it was still win-win for both users and developers, it wasn't one-sided.
Emulator Coder, Experienced Forum User, Published Author, Experienced player
(724)
Joined: 2/23/2006
Posts: 682
Accuracy is important in my system of priorities too, just not important enough to reject a good movie if the author e.g. has slow computer or some other reason. I guess you indeed have to be TASer to fully appreciate the labour.
People will eventually move from snes9x on their own. I don't see why we have to artificially hasten the process. Do you remember any arguments during Famtasia-to-FCEU transition? Not a single one.
So, make them move by providing with better tools, not by enforcing your personal set of priorities.
Emulator Coder, Experienced Forum User, Published Author, Experienced player
(724)
Joined: 2/23/2006
Posts: 682
My opinion:
Accept Snes9x movies only to the Moons/Stars tier, and if the movie is not entertaining enough, do not accept it to the Vault, because Vault is for speedrun records, and the most important property of records is their credibility, so naturally this is where emulation accuracy is relevant.
But this means that movie viewers should not vote No because of emulator choice, especially since the poll question only asks about entertainment.
Emulator Coder, Experienced Forum User, Published Author, Experienced player
(724)
Joined: 2/23/2006
Posts: 682
That judging decision was made by feos. Russian legal system was never precedent-based, it was always codified law-based. You may argue whether it is relevant or not, but I wouldn't expect feos to be entirely aware of the consequences of his judging there.
In fact, I personally also find it illogical to value a single judging decision so high.
If you read his later posts, you'll see that he does not consider his decision to be a precedent. So, please don't use it as such.
Emulator Coder, Experienced Forum User, Published Author, Experienced player
(724)
Joined: 2/23/2006
Posts: 682
Those steps do help.
1. Download lua-gd-2.0.33r2-win32 (exactly the 32-bit version, even if you use x64 Windows) and extract it into the Gens folder.
2. Do the same with the lua5_1_4_Win32_bin - extract all dll files right into Gens folder instead of littering C:\WINDOWS\system32.
3. Now Lua scripts will successfully find GD library, and the library itself will be able to find necessary Lua stuff (even though Lua5.1 is already statically linked into Gens.exe, but GD library needs lua51.dll for its own purposes).
For example, try this code:
Language: lua
require "gd";
-- load resources
gdstr = gd.createFromPng("1.png"):gdStr();
function draw()
gui.image(10, 20, gdstr);
end
emu.registerafter(draw);
Emulator Coder, Experienced Forum User, Published Author, Experienced player
(724)
Joined: 2/23/2006
Posts: 682
Hurray, this year's April 1st actually brought something novel. Neat idea, adelikat!
This should be published somehow, but a simple encode won't do the justice.
Could you describe your TASing process while making this movie? Since you need to sync with many iterations of the infinite loop, I presume you had to work out some special workflow (although the difference between iterations isn't big in this game, but still, simply recording Input by only looking at the events of a single iteration, this is almost like playing blindly).
I actually had similar task in 2007, when making this movie. In this game you have to play one level two times, in order to collect all puzzle pieces. And naturally, RNG and enemies movement/spawning is different, so I decided to make myself an extra challenge and complete the level both times with the same input (by hexediting). That wasn't too difficult, because I only needed to sync my Input with 2 instances of the level, not the entire multitude of all possible instances. My workflow was similar to how DualTASing is done - by opening 2 emulators and recording two movies, starting from different point in the game.
The same way as other speedruns are improved - by reducing the length of Input Log. I'm sure there are a few frames to shave, while still producing the infinite cycle.
Or it can be improved the same way as playarounds - by increasing the entertainment (or versatility) of the multitude of iterations.
Nah, that would be entirely different type of movie, because every iteration would be exactly the same, so TASer wouldn't need to take into consideration the whole multitude of iterations, he would only need to record this single iteration (quite long though) and that's it.
In other words, searching for the least common denominator is boring (it's pure mathematics), while searching for the greatest common divisor is actually interesting and challenging.
Emulator Coder, Experienced Forum User, Published Author, Experienced player
(724)
Joined: 2/23/2006
Posts: 682
I have to agree this movie lacks the feeling of a miracle, for a stranger it looks like something that could be done using an advanced debug mode accessed via cheats, while the old one clearly goes beyond the imaginary borders of the game.
I still voted Yes for the entertainment, but I think playarounds shouln't share the fate of speedrun records (obsoletion obsession). If only there was a separate tier for Playarounds, both movies could be hosted in it.