Jump to content

A new guide!


Recommended Posts

You're wrong. Look at the second part of that guide you linked to. While the C&C95 autorun has no Version tab, running it doesn't spawn an Ntvdm.exe or wowexec.exe process.


The INSTALLER, however, while it DOES have a Version tab, DOES spawn the Ntvdm.exe and wowexec.exe processes, a typical indication of a program being identified as needing 16-bit compatibility to run.





My disassembler confirms this. The autorun uses 32-bit CPU registers (eax, ebx, ecx and edx), which can hold values from 00000000 to FFFFFFFF (4294967295). The installer's code doesn't have those at all; it only uses the 16-bit registers (ax, bx, cx and dx), which can only handle values of 0000 to FFFF (65535).


So the autorun is 32 bit, and the installer is indeed only 16 bit

Link to comment
Share on other sites

I'm not good with it, but, i have disassembled the AUTORUN.EXE, and it calls the ADVAPI32.DLL, KERNELL32.DLL, GDI32.DLL, USER32.DLL and the WINMM.DLL, who are 32-bits DLL but, the SETUP.EXE calls only the KERNEL, GDI, USER 

and KEYBOARD, the same files who INTALL.EXE call too, these is a 16-bits files (i use the W32Dasm Version 8.9, so, if i'm wrong, tell to me)

oh man, what mass! sorry.  :huh:


Link to comment
Share on other sites

not that... actually reserving space for variables in the stack, like a 40-byte string... and then accessing variables behind that one, while keeping in mind how many pushes I've done before that.

mov, eax, [esp+48]


Using printf in assembler is practically nothing but that mess.

Link to comment
Share on other sites

Yeah, I've used printf in asm. I hate using the stack, just because it's so tedious trying to count how many bits to change the stack pointer to when you want that variable you pushed 100 lines ago


I prefer to stick with my C++ though tbh :P

Link to comment
Share on other sites

well dunno, I'm getting pretty good at this. Managed to read my own custom named ini files for the new language system in C&C95 v1.06c :)





--> game reads "lang_FRE.ini" from updat*.mix files (using printf to insert the language name in "lang_%s.ini")

--> if found, reads the info in it, which tells the game which filenames and other strings to replace for the French version



Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Create New...