Let me know if you're interested and how do you feel about this. Greetings, Wolverine
PS. And here's one of the screens for your amusement:
PS2. I'm also looking for people with knowledge of MOO2 palette formats. PM if you have some info.
Yes you're right, but it's not only that different palettes are used for different LBX files. There are internal palettes in some images. There are few palettes mixed with mouse cursors in FONTS.LBX and IFONTS.LBX. But! Take for example COUNCIL.LBX. The first file which in fact is mouse cursor has internal palette. The rest of the graphics in this file doesn't have internal palettes, but neither looks good with so called external palettes (FONTS.LBX and IFONTS.LBX). But if you take the internal palette from the first image in COUNCIL.LBX, other images look good!From looking at some other MOO2 code, it looks like there are a lot of custom palettes so one load palette function may not work for all the LBX files.
This type of thing used to be common when memory and disk space was in short supply. The developers were trying to squeeze as much as possible out of the resources available at the time. Probably what they did was to make an LBX packer tool that compressed everything as tightly as possible.First of all thank you. It's far from being finished, but as I have said it's a pretty good start for editor or perhaps MOO2 remake.
Yes you're right, but it's not only that different palettes are used for different LBX files. There are internal palettes in some images. There are few palettes mixed with mouse cursors in FONTS.LBX and IFONTS.LBX. But! Take for example COUNCIL.LBX. The first file which in fact is mouse cursor has internal palette. The rest of the graphics in this file doesn't have internal palettes, but neither looks good with so called external palettes (FONTS.LBX and IFONTS.LBX). But if you take the internal palette from the first image in COUNCIL.LBX, other images look good!From looking at some other MOO2 code, it looks like there are a lot of custom palettes so one load palette function may not work for all the LBX files.
It's not the only rather ugly thing that is seen in the graphics. IMO I think that some coders were smoking too much dope. I know that it was the time were size mattered, but this really could be done cleaner. For example. Take SHIPS.LBX. None of the ship images looks good with external palettes. But this is more complicated issue, because there are many small files, one by one pixel size, that doesn't do anything that are really palette holders. BUT! Those are not full palettes, but rather chunks merged with other palettes. The SHIPS.LBX is structured like this: SHIP_GRAPHIC1, SHIP_GRAPHIC2, ... , SHIP_GRAPHICn, PALETTEHOLDER, SHIPGRAPHICx1, SHIPGRAPHICx2, ... , SHIPGRAPHICxn, and so on. Those ships are categorised by colour. (I've only recently spotted that ship design DOESN'T belong to RACE, but to COLOR you choose in the game!) You can think about those ship groups as colour groups. Also if you take a look at some external palettes you can see there are few of them that obviously have the same colour representation for few places in the palette. These are probably the places where those palette chunks from internal palettes go (are merged). This is not a stupid idea, but to check which palettes are used for ships for example you'll have to get numerical representations of the colours in the ship graphics and then compare with those placeholder places in external palettes.
That's a pretty tall order. Someone else might help, who knows.That's why a full blown converter and editor would need external representation of palette relations between most of the graphic files, external palettes and internal (merged) palettes in some kind of XML file. I want to do it, but currently my business projects are priority, so I won't have time for it. If anybody would like to decipher which palettes are used for what and where it would be really nice and could really speedup the development of the converter and the viewer.
Not really. It's not compressed as tightly as possible. LBX archives are simple concatenated files with additional header with offsets pointing each file. It's much more like tar (but simpler) than real compressed archives like gz or zip.This type of thing used to be common when memory and disk space was in short supply. The developers were trying to squeeze as much as possible out of the resources available at the time. Probably what they did was to make an LBX packer tool that compressed everything as tightly as possible.
Every LBX (except movies) are exactly the same structure. Individual files within the archive are what is different and if you've taken a look at disassembled code you should know that LBX decompression is the same for each archive, only the routines accessing individual files are different. That's what I think it looks like, because I don't have disassembled code. And BTW. I wasn't interested in other types of files other than palettes and graphics so I won't discuss them here.From looking at the MOO2 disassembly, it looks like then they wrote individual functions for accessing each type of LBX file.
As for assembly language. It's funny and really cool. There are many resources on the net discussing this language. Yes it's different, because it's the machine code, but C/C++ compiles it's code to assembly before linking too. Take a look at Netwide Assembler. In my opinion learning assembly with NASM and Linux is much more fun and it's better documented than DOS equivalent. And they really are not very different, except for registers and interrupt request numbers. There's pretty good assembly site at asm.sf.net.I'm learning assembly language so that I can better understand the disassembly. It's slow going. Assembly is totally different from learning something like C++ or Python.
Well. For me it matters.That's a pretty tall order. Someone else might help, who knows.
There's no rush since it's purely a volunteer project. It doesn't matter if it gets done in a month or several years from now.
One thing that I learned in college is that real-life has to come before gaming or else you'll stay stuck at the bottom never truly succeeding at anything besides games. Being godly at gaming is pretty meaningless unless you decide to become a pro-gamer or game developer.
I know it's not gziped or anything like that but it is tightly packed.Not really. It's not compressed as tightly as possible. LBX archives are simple concatenated files with additional header with offsets pointing each file. It's much more like tar (but simpler) than real compressed archives like gz or zip.This type of thing used to be common when memory and disk space was in short supply. The developers were trying to squeeze as much as possible out of the resources available at the time. Probably what they did was to make an LBX packer tool that compressed everything as tightly as possible.
I haven't looked too deeply at the LBX format yet but this sounds correct.Every LBX (except movies) are exactly the same structure. Individual files within the archive are what is different and if you've taken a look at disassembled code you should know that LBX decompression is the same for each archive, only the routines accessing individual files are different. That's what I think it looks like, because I don't have disassembled code. And BTW. I wasn't interested in other types of files other than palettes and graphics so I won't discuss them here.From looking at the MOO2 disassembly, it looks like then they wrote individual functions for accessing each type of LBX file.
It is interesting to learn assembly but it is somewhat time consuming. I'm more of a high-level OOP programmer than a machine level coder.As for assembly language. It's funny and really cool. There are many resources on the net discussing this language. Yes it's different, because it's the machine code, but C/C++ compiles it's code to assembly before linking too. Take a look at Netwide Assembler. In my opinion learning assembly with NASM and Linux is much more fun and it's better documented than DOS equivalent. And they really are not very different, except for registers and interrupt request numbers. There's pretty good assembly site at asm.sf.net.I'm learning assembly language so that I can better understand the disassembly. It's slow going. Assembly is totally different from learning something like C++ or Python.
I have no doubt that it could be useful depending on what career path you take. When I first graduated from college the recruiters mostly just seemed interested in my degree and grade point average. They also tested my programming ability and understanding of computers. Getting good references from the professors seemed to help too.Well. For me it matters.That's a pretty tall order. Someone else might help, who knows.
There's no rush since it's purely a volunteer project. It doesn't matter if it gets done in a month or several years from now.
One thing that I learned in college is that real-life has to come before gaming or else you'll stay stuck at the bottom never truly succeeding at anything besides games. Being godly at gaming is pretty meaningless unless you decide to become a pro-gamer or game developer.It's my ambition to finish it. And as for real life. I won't agree with you. It's not only about the gaming, but most importantly it's great fun to crack the format and then write a program utilising it. But there's also another side to it. I'm gaining more and more knowledge in programming, cracking and methods of data representation and deciphering. I'm a self-taught network administrator and programmer, so this significantly adds to my skills. And if I ever want to be really good at what I'm doing I have to gain vast knowledge about data transmission, representation, cryptoanalysis, signal interception and decoding. And most of all this is what I do in my real life too. So writing this little app might look like it's not related to my work, but trust me. It is.
This discussion is a getting a little bit off-topic. I'm not into 'hacking' or something.I have no doubt that it could be useful depending on what career path you take. When I first graduated from college the recruiters mostly just seemed interested in my degree and grade point average. They also tested my programming ability and understanding of computers. Getting good references from the professors seemed to help too.
If you become super proficient at the low-level technical stuff you should keep it to yourself until it's needed. The term 'hacker' scares many of the managers (or customers) away because they're worried about security.
Didn't mean to sound preachy or to go too far off of topic but learning how to crack a program is in the realm of hacking. There are good hackers and bad hackers. I wasn't suggesting that you are the bad kind. There isn't anything wrong with trying to improve this game by making modifications to it. I think the graphics viewer/changer is a good idea.This discussion is a getting a little bit off-topic. I'm not into 'hacking' or something.I have no doubt that it could be useful depending on what career path you take. When I first graduated from college the recruiters mostly just seemed interested in my degree and grade point average. They also tested my programming ability and understanding of computers. Getting good references from the professors seemed to help too.
If you become super proficient at the low-level technical stuff you should keep it to yourself until it's needed. The term 'hacker' scares many of the managers (or customers) away because they're worried about security.I just want to be a good at what I'm doing. Writing programs like MOO2 Graphics Viewer is most of all just pure fun. If it turns out to be useful in future I'd be even more happy.
As for managers that are scared because of the word 'hacker'. You might be right that there's little understanding of IT as whole, but here in Poland if you're working for international company they're embracing people with great skill and knowledge. I have once worked for such company and one person from the board of managers asked me if I could try to somehow access the old accounting program that they forgot password to. I agreed, got on the computer and managed to access this program within few minutes with CEO standing right behind me. When I did it few people who were looking at what I'm doing said: "WOW". Besides that they were ignorant in this topic (it wasn't very hard to do) this, and few other things I did there gave me quite powerful position in that company. What's the point of this story? It's all about making impression, so if you're into developing your career quite fast, just show your knowledge and skills to the right persons at the right time. Anybody can do that.I hope you'll manage do this easily too.
And besides. MOO2 is my favourite game of all times, despite the fact that I got onto it just four years ago. There's only three games that are worth playing for me: MOO2, OpenTTD and System Shock 2. I'd really love to see remake of MOO2 which has more technologies, better and smarter AI fully utilizing diplomacy, intrigues, spies, maybe better graphics, more advanced diplomacy system and better strategic options like for example creating traps, key planetary systems that would guard the access to the rest of empire with better fortifications, starlanes would certainly add a strategic value, less micromanagement in the late game and much more. Maybe the work done here by Grig de Griz and me will spark a movement for creating such remake. I have high hopes for it, because MOO2 is one of the few games that simply cannot be substituted.
Return to “Game Modifications”
Users browsing this forum: No registered users and 5 guests