If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!

Talk:Pikmin (GameCube)/Windows Executable

From The Cutting Room Floor
Jump to navigation Jump to search
This is the talk page for Pikmin (GameCube)/Windows Executable.
  • Sign and date your posts by typing four tildes (~~~~).
  • Put new text below old text.
  • Indent replies by prefixing with a colon :
  • Add new sections with the 'Add topic' button at the top right.
  • Be polite.
  • Assume good faith.
  • Don't delete discussions.
  • Be familiar with the talk help page.

Found a potential (debug?) control editor

After doing the things bellow, and then loading up the texConv and the game, on the ATX server window, I clicked "client : Piki the Game". This opened a new window "AgeWindowNodes", which I assume is an editor for the game. Anyways, in the GameFlow folder, I clicked "Key Settings", opening up a new window "AgeView - Key Settings"(side note: It seems you have to be in a level before "Key Settings appears". I have no clue what this does, but it looks to be a control editor, with the option to load/save controls to a file. I'm assuming this is for the debug controls as the A button is used 3 times. I'm going to continue messing around with "AgeWindowNodes", as it seems to hold many secrets (or functions if your boring)

You've opened the key settings window, which is to be used in game. The reason it's there is because there is a .bin file within the games files that has all of the keys and what they're mapped to.
The whole 'Age' section of the toolkit is for windows and other networked tasks (as the development toolkit works based on TCP streams, hence Atx(SERVER))
AgeWindowNodes is exactly what it says, they're 'Nodes' (heaps of data) that are being displayed in a 'Window' using the 'Age' service.
Ambrosia (talk) 4:47, 10 April 2020 (GMT)

The secrets, unraveled!

Due to recent developments by me, Patrick Anton / Ambrosia, AtxServer and the entire Pikmin 1 development toolkit is now accessible. To do this, do as follows:

  • Open sysBootup with this command: sysBootup.exe +direct 127.0.0.1 +client AtxServer.
  • This basically routes all info sent from and to the AtxServer to the localhost, or the computer running the server
  • open sysbootup using this, and do NOT close the atxserver under any circumstances:
  • sysBootup.exe +output +plugins plugins +direct 127.0.0.1
  • Now click Tools -> either PikiGame or TexConv
  • click OK, and then....
The screen you see when you've generated an age server and open texConv

So yeah, everything works, you have a full Pikmin 1 editor, you can load TGA files now, you can load dmd model files, edit models, edit generator files, the list goes on. Ambrosia (talk)

Reverse engeneering & co

Did somebody try to add +client AtxServer to the command line? This does not start the game, but another plugin!

  • +output opens the Debug-Output-Window
  • +plugins NAME defines a directory for plugins.
  • +client NAME loads a plugin. If no plugin is specified, the message not top window will appear. But you can load two clients!

The following "clients" or "plugins" open a window:

  • TexConv Looks like a model or texture editor. Can load *.tga files
  • PikiGame The pikmin game itself
  • AtxServer A Window that starts listening on TCP-Port 1369. When somebody connects to it, you have to write 4 chars in the socket. Then the console will output Unknown service ABC not adding.

I will now start to write an AtxClient for testing purposes. My program will bruteforce all char combinations until it will not output the error message! I will post my results here when its finished!

Danbru1211 (talk) 12:46, 11 November 2014 (EST)

Awesome! Yeah, there has to be more about the command line arguments than what's documented. But I guess it never got far into it. Post any little thing you can find, please! {EspyoT} 07:13, 12 November 2014 (EST)
There is another command switch you can use, +direct. This changes the output of the AtxServer, by printing 2 more lines.
It adds some new output to the AtxServer window....Take a look
Before.
After
Not entirely sure about this. I shall look into it some more in the future. Let me know if anyone else comes up with anything...
--Cartographer (talk) 22:11, 24 January 2015 (EST)
Can we merge the page Notes:Pikmin and Pikmin/Windows_Executable?
Can somebody else also try to get informations about this ATXServer?
I found something in plugAtxServer.dll. It starts listening on Port 1369 and when somebody connects to it, the client has to write 4 chars into the opened tcp-stream. This tells the ATXServer what the client does. I found the code that compares the sent characters in the dll:
.text:10013A46                 cmp     [ebp+var_244], 61676500h   //Compare the characters with something
.text:10013A50                 jz      loc_10013BEC               //If true jump to somewhere (I want to get into thisǃǃǃǃ)
.text:10013A56                 cmp     [ebp+var_244], 61707000h   //Again with other string
.text:10013A60                 jz      short loc_10013A77
.text:10013A62                 cmp     [ebp+var_244], 66696C00h   //Again with other string
.text:10013A6C                 jz      loc_10013B9B
.text:10013A72                 jmp     loc_10013C3C               //If nothing is true, ouput 'Unknown Service *** not added'
//Here is some other code....
.text:10013C3C loc_10013C3C:                           ; CODE XREF: sub_100138F0+182�j
.text:10013C3C                 mov     esi, esp
.text:10013C3E                 push    0FFFFh
.text:10013C43                 mov     ecx, [ebp+var_18]
.text:10013C46                 mov     edx, [ecx]
.text:10013C48                 mov     ecx, [ebp+var_18]
.text:10013C4B                 call    dword ptr [edx+1Ch]
.text:10013C4E                 cmp     esi, esp
.text:10013C50                 call    _chkesp
.text:10013C55                 lea     eax, [ebp+var_24]
.text:10013C58                 push    eax             ; char
.text:10013C59                 push    offset aUnknownService ; "unknown service '%s', not adding\n"
.text:10013C5E                 call    sub_100131F0
.text:10013C63                 add     esp, 8
Can anybode help me to get into loc_10013BEC? I want to know what string is compared in 61676500hǃ
Danbru1211 (talk) 03:10, 17 November 2014 (EST)
The strings are right there, the four-byte values are immediate values (or whatever they're called on modern architectures). All three of them are null-terminated strings. 61676500h = "age", 61707000h = "app", and 66696C00h = "fil". The null is part of the comparison so try feeding those three four-byte sequences to the server and see what output you get. LocalH (talk) 09:45, 17 November 2014 (EST)
Well, that subpage is for explaining the executable to the general audience, while Notes: pages are just notes left behind by editors and contributors, for editors and contributors. So it might not be in everybody's best interest to keep the instructions on the same page as the reader-ready info. {EspyoT} 15:55, 17 November 2014 (EST)
Guysǃ Please try opening a tcp stream on port 1369 to your machine where sysBootup.exe runs (with that AtxPlugin)ǃ First 4 characters indicate what job each client doesǃ
  • After connecting and sending age

  • If you send app or fil -> CRASH

  • Danbru1211 (talk) 02:09, 18 November 2014 (EST)

    All pikmins displaying

    I just got all pikmins showing correctly! Can we use this screenshot on the page?

    Pikmin executable all pikmins showing.pngPikmin executable enemies showing.png

    --Danbru1211 (talk) 08:20, 8 December 2014 (EST)

    How did you manage to have all of them showing? --Mspeter97 (talk) 12:27, 8 December 2014 (EST)

    FULLFILL PIKI

    --coolymike (talk) FULLFILL PIKI must’ve been used when pikmin was still something like the sims, to fullfill their needs. The command is under Menus->In-Game->Kando Options->FULLFILL PIKI. If anybody knows more about this, please edit the wiki.

    Fixed the radar screen

    Pressing N crashes the debugger because it is mapped to (Y) on the controller, which opens up the radar screen. By looking at the output log, I figured out which BTI files were causing it to hang, and replaced them with copies of background.BTI from the dataDir root. Pikmin executable radar screen works!.png

    This is pretty big because it allows us to decrease values in the debug menus now! This makes the built in light editor a viable tool.

    Also, Opt Level looks like it changes what ship parts are added when UFO Level is increased. It must be keeping track of what area you are in. --Minty Meeo (talk)

    Some hex editor nonsense.

    I've been scanning through sysBootup.exe with a hex editor to see if I could find any interesting strings, but most of it is incoherent gobbledygook, as is to be expected. At the end of the file, there is a short string containing a file directory, presumably used by one of the developers. The directory reads "C:\Development\DolphinPiki\sysBootup\Debug\sysBootup.pdb", but a scan of the disc image contents reveals there is no such file present on it. A .pdb file is usually used for some sort of debugging or compilation code in Microsoft Visual Studio. So maybe that's useful information, maybe it isn't, but I thought it was worth mentioning. Someone more experienced in code might be able to decompile sysBootup.exe but that might be a long shot.

    Yes, goobledygook is to be expected when trying to open an executable with a hex editor. I have decompiled sysBootup in it's entirety, and partly sysCore. If you want to talk about it join Hocotate Hacker (https://discord.gg/G7Pgkdh) and ping me (Ambrosya) :) looking forward to hearing from you!
    Ambrosia (talk)