inconsistent
He/Him
Player (220)
Joined: 5/4/2023
Posts: 10
Location: Phantomile
Hello! I want to bot to find the best town map in Animal Crossing: Wild World (the one on the DS). Ideally the shop, town hall, and houses are all as close as possible, to cut on movement. The weather has to be sunny or the game takes extra time to load rain/snow effects. The map you get is based on RNG, and the easiest way I found to change whatever the "starting seed" is without losing time is to change time a second into the future/past from NDS settings. After that it's adjusting inputs for lag frames until the map is generated, reading and saving RAM locations of the buildings, then restarting a second in the future and doing the same thing. After a while it'd have the best map. I've done it manually ~10 times but this is what people use bots for isn't it? So, would anyone know the best way to start automating this process? Thanks.
Dimon12321
He/Him
Editor, Reviewer, Experienced player (596)
Joined: 4/5/2014
Posts: 1222
Location: Romania
Unfortunately, Basic Bot in Bizhawk is intended to brute-force basic scenarios for button meshing. The goal is specified by RAM addresses conditions, like the highest value. You cannot instruct it to change NDS settings. Take a look at these submissions: #6589: Arc's NES Who Framed Roger Rabbit in 03:48.11 - there is a big map where items spawn at pre-defiend spots, but at random. The input was manually brute-forced to get the best spots. The objective looks similar to yours if the map is not completely generated at random. #8248: adelikat's NES Dragon Warrior IV in 1:56:29.29 - here, the whole game was examined for top to bottom, and a lot LUA scripts were written to automatize the process of passing each chapter in the fastest time. Basically, they was playing itself for a long time. As you can see both of these are NES games, which means no RNG was manipulated outside the game. I don't think LUA scripts can change settings of a core, like the system timer, but if the same can be achieved by starting the game by delaying your input, then I don't see the problem in brute-forcing the game around that point. Nobody will reject your submission because of some delay in the main menu. One way or another, you need to find RAM address which indicate the properties you need. Examine how the map is generated. Is the whole map is generated at once or only the location you being on? Is it restricted to 1 shop/hall or not? What about trees and other obstacles which may block your way? And a lot of other questions. You will need to reverse-engineer the map generator and entity properties, like type of an object (grass, tree, river, creature, shop, town hall) and their coordinates. All this to know what exactly you need to get. Also, respective LUA scripts have to be made in order to brute-force the conditions you need. Use Dragon Warrior submission for reference. In short, a big amount of work has to be done, if you really want to achieve a perfect game RNG. Otherwise, go with manual meshing and invest some time into it. Your submission will not be rejected because of an RNG that's far from perfect. Read this post to make this clear: Post #532136 Good luck!
TASing is like making a film: only the best takes are shown in the final movie.