![]() Register - Login | |||||
|
Main
- Memberlist
- Active users
- Calendar
- Wiki
- IRC Chat
- Online users Ranks - Rules/FAQ - JCS - Stats - Latest Posts - Color Chart - Smilies |
|
| | |||
| Jul - Posts by GuyPerfect |
| Pages: 1 2 3 4 5 6 7 8 9 10 ... 16 17 18 19 20 21 22 23 24 ... 41 42 43 44 45 46 47 48 49 50 |
|
GuyPerfect Catgirl Pics or it didn't happen. Level: 60 ![]() Posts: 400/1021 EXP: 1677635 For next: 95143 Since: 07-23-07 Since last post: 2 days Last activity: 6 hours |
|
| Ah. Fly Swatter Syndrome. |
|
GuyPerfect Catgirl Pics or it didn't happen. Level: 60 ![]() Posts: 401/1021 EXP: 1677635 For next: 95143 Since: 07-23-07 Since last post: 2 days Last activity: 6 hours |
|
| It's a subtle reference to reality coated in my special brand of satire. Guns kill animals, fly swatters kill animals. Gotta pick and choose what's ethical!
Though that's drifted from the topic. What's a better question is how one can mistake a child for a turkey. |
|
GuyPerfect Catgirl Pics or it didn't happen. Level: 60 ![]() Posts: 402/1021 EXP: 1677635 For next: 95143 Since: 07-23-07 Since last post: 2 days Last activity: 6 hours |
|
Originally posted by Neko54123 He may have repeated you, but that just shows you're both thinking the same thing. Wai-... wait a minute. |
|
GuyPerfect Catgirl Pics or it didn't happen. Level: 60 ![]() Posts: 403/1021 EXP: 1677635 For next: 95143 Since: 07-23-07 Since last post: 2 days Last activity: 6 hours |
|
| Reminds me of how you can build a tube out of paper towels to siphon gasoline from an old car's tank. |
|
GuyPerfect Catgirl Pics or it didn't happen. Level: 60 ![]() Posts: 404/1021 EXP: 1677635 For next: 95143 Since: 07-23-07 Since last post: 2 days Last activity: 6 hours |
|
| Hey, a portal. Why not? |
|
GuyPerfect Catgirl Pics or it didn't happen. Level: 60 ![]() Posts: 405/1021 EXP: 1677635 For next: 95143 Since: 07-23-07 Since last post: 2 days Last activity: 6 hours |
|
Originally posted by neotransotaku You can do that with a gun even when you aren't hunting. |
|
GuyPerfect Catgirl Pics or it didn't happen. Level: 60 ![]() Posts: 406/1021 EXP: 1677635 For next: 95143 Since: 07-23-07 Since last post: 2 days Last activity: 6 hours |
|
| Progress on the level hacking business is coming along nicely. Just a few more details to work out with the actual level data before I can make an editor.
Here's my progress: -- Obsolete picture removed -- And here's what it looks like in-game:
EDIT: Foreground go!
That was easier than I expected. While hacking, there were certain object types that kept throwing errors and I didn't know why. Maybe those three bytes I didn't know what they did had something to do with it? Sure enough. Those mysterious objects were actually used to build blocks that were non-rectangular in shape. Now I've got the foreground all done. I've also got Classic level 28 handy for you! • Picture • YouTube Video |
|
GuyPerfect Catgirl Pics or it didn't happen. Level: 60 ![]() Posts: 407/1021 EXP: 1677635 For next: 95143 Since: 07-23-07 Since last post: 2 days Last activity: 6 hours |
|
| Not exactly ROM hacking, per sé, as this is a PC game, but this is probably the best spot for it. I'm hacking The Lemmings Chronicles because I thought it'd be fun and easy to do. It is both fun and easy to do.
Tribe IDs Three of the twelve Lemmings tribes are in this game: Classic, Shadow and Egyptian. The game seems to be structured in a way that adding more tribes may simply be a matter of adding in more files. We'll see over time. As far as level editing is concerned, there are a few identifiers used to determine tribe: - 001 = Classic - 002 = Shadow - 003 = Egyptian The graphics, on the other hand, use these identifiers: - 004 = Classic - 010 = Shadow - 005 = Egyptian Don't worry about that second list for now. They're not important to level editing. Palette First thing you're gonna need to do to display a stage is load its palette. - Palettes contain 256 entries. - Part of the palette is dedicated solely to the Lemmings themselves and stored in their respective .IND files. I haven't hacked those yet. - Part of the palette is loaded from GRAPHICS\GAME.PAL. This is probably for common things that never change color. - The rest of the palette is loaded from STYLES\DATA***.PAL. This is the file I'm gonna be documenting at this time. There are three DATA***.PAL files in the STYLES directory; one is loaded depending on which tribe you're playing as. Use the first identifier list to determine which palette file to use for your tribe. Palettes in the game are stored as arrays of color values in the format RGB24 (one byte for each channel). The DATA***.PAL files each contain 208 palette entries, but there's a catch: - The first 64 entries (offsets 0x0000 to 0x00BF) have unknown significance at this time. They seem to be normalized between 0 and 255. - The remainder of the file contains 144 palette entries that are loaded sequentially starting at palette index 0x60. The values, for whatever reason, need to be multiplied by 4 when loaded... Sometimes it's best to not ask questions. Stage Block Definitions The stages need to have graphics and such to be useable, right? These are stored in the STYLES directory in the following files: - PERM***.OBJ - PERM***.FRL - PERM***.BLK - TEMP***.OBJ - TEMP***.FRL - TEMP***.BLK "PERM" is short for "permanent," but that's not very descriptive of what those objects do. PERM objects can really be described as anything that isn't directly stage data. This can be traps, items, exits, etc. "TEMP" is "temporary," but is actually anything having to do with something a Lemming can step on. Some surfaces can be destroyed, others disintegrate, and some are rock hard, but if a Lemming interacts with it, it's a TEMP object. Object Definition Files The .OBJ files include arrays of data used to describe the objects used in the stages. - The total number of entries is arbitrary and is calculated directly from the file size. - Each entry consists of 15 bytes. 0x0 UINT16 - Block ID
These are sequential for the most part, but their location can vary. They are used by the game to link up an object used in a stage with its definition. Kinda sloppy, but it allows easy moving of data in different parts of the file. 0x2 UINT16 - (Unknown A) The significance of this element is not known at this time. 0x4 UINT16 - Block Definition FRL Offset The offset of the block's actual tile definition in the corresponding .FRL file. 0x6 UINT16 - (Unknown B) The significance of this element is not known at this time. 0x8 BYTE - Block Tile Width 0x9 BYTE - Block Tile Height The tile width and height of the object. Probably used for memory allocation. 0xA UINT16 - (Unknown C) 0xC UINT16 - (Unknown D) The significance of these elements is not known at this time. 0xE BYTE - Terminator A terminator. Is this really needed? Must be 0. Block Definition Files The .FRL files include chunks of data used to describe the exact construction of objects. - The data is referenced indirectly, so it's impossible to parse without the corresponding .OBJ file. When a .OBJ file defines an object, it will link into the .FRL file with the following entries: 0x0 UINT16 - Internal Data Offset
This might have been intended for an indexing setup at one time or other, but now it's just redundant data. This entry points to another location in the .FRL file. Once redirected, there's another kind of data entry in the .FRL file that describes the object: 0x0 BYTE - Structure Type
There are two ways that the game can build stage objects, and they are identified with this file: - 0x00 = Data is built manually by specifying the tile X and Y coordinates before linking to the pixel data. - 0x01 = The pixel data is linked to directly to completely fill the rectangular region specified by the object definition. 0x1 UINT16 Tile Count Specifies the number of tiles used to describe the object. Used for allocating memory; x4 for Structure Type 0 and x2 for Structure Type 1. 0x3 (If Structure Type == 0) UINT16 Construction List If the Struture Type is 0, this field will be occupied with yet another redirection pointer. As before, this value specifies the location in the same .FLV where the tile coordinates and references are stored. 0x3 (If Structure Type == 1) Array.UNIT16 Tile References If the Struture Type is 1, the data following the Tile Count element is a list of pointers referencing the tile data. There are Tile Count entries. Each entry is the offset in the .BLK file where the tile data is located. In the event Structure Type is 0, there will be one more data entry in the .FRL file. There will be Tile Count elements of the following format: 0x0 BYTE - X Coordinate
0x1 BYTE - Y Coordinate The X and Y coordinates of the tile used to describe the object. These are in tile coordinates, not pixel coordinates. 0x2 UINT16 Tile BLK Offset The offset in the .BLK file where the tile data is located. Tile Definition Files The .BLK files contain raw pixel data used to define the graphical appearence of stage objects. - The data is referenced indirectly, so it's impossible to parse without the corresponding .FRL file. - Only the tile index is referenced. Since each tile is 16 bytes, multiply the index by 16 to get the file offset of the tile. - Unlike most systems, the dimensions of one tile are 8x2 pixels. - Each tile is specified with 16 bytes: Each byte specifies the palette index of the color to be used.
Let's say that the 16 bytes in a tile definition are labeled thusly: 0 1 2 3 4 5 6 7 8 9 A B C D E F That said, the pixels of the tile are defined by rearranging the bytes in this order: 0 4 8 C 1 5 9 D 2 6 A E 3 7 B F Level Data With the fancy graphics out of the way, we need to know what to do with them in order to successfully build a stage, don't we? Stages are stored in the LEVELS directory in the following files: - LEVEL***.DAT - PERM***.OBS - TEMP***.OBS In this case, the *** specifies which stage the game loads: - 001 to 030 = Classic levels - 101 to 130 = Shadow levels - 201 to 230 = Egyptian levels - 400 to 999 = (Haven't investigated these yet. Likely tutorials and the practice stage) Level Meta Files The .DAT files specify all the meta information of a stage before it's actually loaded into memory. - The file consists of one entry exaclty 30 bytes long: 0x00 UINT16 Tribe ID
Specifies which tribe file to load. Use the second list (4, 10, 5) to pick a tribe. Links to GRAPHICS\TRIBE***.IND 0x02 UINT16 (Unused A) 0x04 UINT16 (Unused B) Not used in any of the stages, but might still retain their functionality. They link to GRAPHICS\CAVE***.MAP and GRAPHICS\CAVE***.RAW, respectively. No CAVE files exist in that directory, however. 0x06 UINT16 PERM File ID 0x08 UINT16 TEMP File ID Specify which PERM***.OBS and TEMP***.OBS file to use. 0x0A UINT16 (Unknown A) The significance of this element is not known at this time. 0x0C UINT16 Stage Width 0x0E UINT16 Stage Height Specifies the width and height of the stage, in pixels. Objects can be placed out of bounds, but extranneous pixels will not be retained. 0x10 UINT16 Default Camera Left 0x12 UINT16 Default Camera Top Specify the current location of the camera. Should not place any part of the viewport out of bounds. The viewport's dimensions are 320x160 pixels. 0x14 UINT16 Starting Time The value of the timer when the stage is loaded. Time format is not known, but is assumed to be an integral number of seconds. 0x16 UINT16 (Unknown B) The significance of this element is not known at this time. 0x18 UINT16 Lemming Drop Rate 0x1A UINT16 Lemming Drop Delay Determine how fast Lemmings drop from the starting gates, and how much time ellapses before they begin to drop. The time format for these is currently unknown, but larger values yield longer pauses. 0x1C UINT16 (Unknown C) The significance of this element is not known at this time. The tileset, music and palettes are selected by the game depending on which tribe you select. Why the tribe graphics themselves aren't determined in this manner is a mystery. Level Obstacle Files Both the PERM***.OBS and TEMP***.OBS files share the same format and define the stages by placing objects in them. - The number of elements in the file is calculated directly on the file size. - Objects are drawn in the order they appear, and the PERM layer comes before the TEMP layer. - Each element consists of six bytes: 0x0 UINT16 Object ID
Specifies the object to be placed. May be used for background panels, stage surfaces, items, enemies, traps, etc. 0x2 INT16 X Coordinate 0x4 INT16 Y Coordinate The X and Y coordinates of the object, in pixels. These appear to be signed values, though this hasn't been tested. Special Object IDs While the Object ID entry of the PERM obstacle file corresponds for the most part with graphical objects defined in the .OBJ files, there are some special values that determine other kinds of objects defined in the game's programming. This is an incomplete list: - 96 00 = Forest eyeballs (white) - 16 27 = Lemming - 88 13 = Builder Item - 89 13 = Bomber Item - 8A 13 = Digger Item - 8B 13 = Hadouken Item - 8C 13 = Climber Item - 8D 13 = Floater Item - 8E 13 = Shimmer Item - 8F 13 = Timer Item - 90 13 = Swimmer Item - 91 13 = Grenadier Item Conclusion I never did like conclusions, so here's a picture: ![]() |
|
GuyPerfect Catgirl Pics or it didn't happen. Level: 60 ![]() Posts: 409/1021 EXP: 1677635 For next: 95143 Since: 07-23-07 Since last post: 2 days Last activity: 6 hours |
|
| While graphene is a good thermal conductor, it does have its limits. It'll be interesting seeing how they avoid having it melt when the temperature inevitably does get too high. |
|
GuyPerfect Catgirl Pics or it didn't happen. Level: 60 ![]() Posts: 410/1021 EXP: 1677635 For next: 95143 Since: 07-23-07 Since last post: 2 days Last activity: 6 hours |
|
| I have an answer for you, Kles, but I'm not entirely sure how to say it. After all, I made this big long document about how to load stage data--pixels and all--and followed it up with a picture.
Yes, it was done with software that loads the level files and draws them to the screen. I programmed it myself as an application of the document that precedes it. ---------- I wrote a new program from scratch today. The old one kept getting patched as I figured things out, but the new one was written from the ground up to make organized sense of everything I've learned. Turns out that there are little icons for special objects in the stages. When you place a Lemming, there's an icon showing which direction it will walk. The same goes for enemies in the game. Icons that may never have been seen again had I not hacked the game! Anyhow, the new setup allowed me to apply the background layer as well, so enjoy: YouTube video of this stage ![]() |
|
GuyPerfect Catgirl Pics or it didn't happen. Level: 60 ![]() Posts: 411/1021 EXP: 1677635 For next: 95143 Since: 07-23-07 Since last post: 2 days Last activity: 6 hours |
|
| Europe release date has finally been announced as June 27. |
|
GuyPerfect Catgirl Pics or it didn't happen. Level: 60 ![]() Posts: 412/1021 EXP: 1677635 For next: 95143 Since: 07-23-07 Since last post: 2 days Last activity: 6 hours |
|
| PERM is both objects AND the background panels. TEMP is just ground, though.
And yeah, that blotch doesn't have anything drawn to it. The remaining pixels are defined somewhere else in the object's behavior itself. |
|
GuyPerfect Catgirl Pics or it didn't happen. Level: 60 ![]() Posts: 413/1021 EXP: 1677635 For next: 95143 Since: 07-23-07 Since last post: 2 days Last activity: 6 hours |
|
| Say no more. |
|
GuyPerfect Catgirl Pics or it didn't happen. Level: 60 ![]() Posts: 414/1021 EXP: 1677635 For next: 95143 Since: 07-23-07 Since last post: 2 days Last activity: 6 hours |
|
| The unique stage graphics are actually all tributes to other games released by Psynosis.
Fun 22 - A Beast of a Level Reference to Shadow of the Beast
Tricky 14 - MENACING!! Reference to Menace, which is actually a fairly upbeat game.
Taxing 15 - What an AWESOME level Reference to Awesome
Mayhem 22 - A BeastII of a Level Reference to Shadow of the Beast II ![]() |
|
GuyPerfect Catgirl Pics or it didn't happen. Level: 60 ![]() Posts: 415/1021 EXP: 1677635 For next: 95143 Since: 07-23-07 Since last post: 2 days Last activity: 6 hours |
|
| I noticed. That site has some wacky URL stuff going on, and apparently lied to my browser when I first copied them over.
Either way, they're fixed now. |
|
GuyPerfect Catgirl Pics or it didn't happen. Level: 60 ![]() Posts: 416/1021 EXP: 1677635 For next: 95143 Since: 07-23-07 Since last post: 2 days Last activity: 6 hours |
|
| I've got some music for youse. I haven't been able to get Awesome to run, but I'm looking into it. These were recorded from the original games, not from Lemmings itself:
"Shadow of the Beast" Used in: A Beast of a level "Carnage Rift" - Is actually the music for all stages in Menace Used in: MENACING!! "Land of Karamoon" Used in: A BeastII of a level My sentiments towards these games is a bit backwards. The MENACING!! level looks rather disturbing, but Menace itself is actually your standard issue horizontal shooter. Even Carnage Rift itself didn't feel too moody. On the other hand, the peaceful forest of A Beast of a Level doesn't do so much to convey the dark atmosphere of Shadow of the Beast. |
|
GuyPerfect Catgirl Pics or it didn't happen. Level: 60 ![]() Posts: 417/1021 EXP: 1677635 For next: 95143 Since: 07-23-07 Since last post: 2 days Last activity: 6 hours |
|
| Without directly linking to (or encouraging the downloading of) old software, I will state that Abandonia has a lot of old DOS games up for download that can easily be played in DOSBox.
The only real issue I've found is that, for whatever reason, the "next level" function doesn't work properly in DOSBox's full screen mode. It goes back to the menu instead of the next stage. Works in windowed mode, though. __________ EDIT: Found out why my copy of Awesome wasn't working. It's a 2-disk set, and I somehow downloaded a pair where each was cracked by a different crew. Durrrr... Well, I got a matching set from Horizon and I was good to go. Holy cow! The game lives up to its name! The music is also extremely good considering, and the game has certainly impressed me. I couldn't find any reference as far as story is concerned, so this music will go down in history as Level 1. "Level 1" Used in: What an AWESOME level |
|
GuyPerfect Catgirl Pics or it didn't happen. Level: 60 ![]() Posts: 418/1021 EXP: 1677635 For next: 95143 Since: 07-23-07 Since last post: 2 days Last activity: 6 hours |
|
| Abandoned or otherwise, the copyright is still current and enforceable. |
|
GuyPerfect Catgirl Pics or it didn't happen. Level: 60 ![]() Posts: 419/1021 EXP: 1677635 For next: 95143 Since: 07-23-07 Since last post: 2 days Last activity: 6 hours |
|
| Discipline has a very specific purpose: to encourage correct behavior. Parents who never discipline their kids--but instead always let them off the hook--end up with bratty kids who turn into 1990's politicians.
From that perspective, I'm gonna say justice. The exact punishment will vary from case to case, but letting people get away with things won't do anything for them. |
|
GuyPerfect Catgirl Pics or it didn't happen. Level: 60 ![]() Posts: 421/1021 EXP: 1677635 For next: 95143 Since: 07-23-07 Since last post: 2 days Last activity: 6 hours |
|
| windwaker:
Run INSTALL.EXE in the L3 directory first of all. I use all the default options except for Sound Card, which I set to Sound Blaster. Works like a charm. Miasmir: DOSBox itself can dump audio output to .wav files by pressing CTRL+F6, then stop capturing by pressing it again. The musics I posted in this thread were recorded from an Amiga emulator, however. All I did for that was load up Audacity and set the recording source to "Stereo Mix," which uses the Windows waveout as the input. Then I just played the game in the emulator and the audio was thusly captured. The hard part was making sure no sound effects got in the way. A little pause here, a little run-away-from-the-enemies there, and you see (or hear) the results. Do take note that not all systems support Stereo Mix as an input source. It's likely a feature of the sound card. Most newer systems support it, though. |
| Pages: 1 2 3 4 5 6 7 8 9 10 ... 16 17 18 19 20 21 22 23 24 ... 41 42 43 44 45 46 47 48 49 50 |
| Jul - Posts by GuyPerfect |
|
Acmlmboard - 07/23/2013 b378.03
©2000-2013 Acmlm, Xkeeper, Inuyasha, et al. |