Register | Login
Views: 19364387
Main | Memberlist | Active users | ACS | Commons | Calendar | Online users
Ranks | FAQ | Color Chart | Photo album | IRC Chat
11-02-05 12:59 PM
Acmlm's Board - I2 Archive - - Posts by HyperLamer
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409
User Post
HyperLamer
<||bass> and this was the soloution i thought of that was guarinteed to piss off the greatest amount of people

Sesshomaru
Tamaranian

Level: 118

Posts: 6282/8210
EXP: 18171887
For next: 211027

Since: 03-15-04
From: Canada, w00t!
LOL FAD

Since last post: 2 hours
Last activity: 2 hours
Posted on 08-04-05 09:32 PM, in Phone Spelling! Link
Mine used to be DUG-RIG-1; I figured that out when I was 6 or so and bored. Funny because my dad's truck was always getting stuck in something.
HyperLamer
<||bass> and this was the soloution i thought of that was guarinteed to piss off the greatest amount of people

Sesshomaru
Tamaranian

Level: 118

Posts: 6283/8210
EXP: 18171887
For next: 211027

Since: 03-15-04
From: Canada, w00t!
LOL FAD

Since last post: 2 hours
Last activity: 2 hours
Posted on 08-04-05 09:34 PM, in Your old addresses and phone numbers Link
Me, I remember every phone number and address I've ever had. I don't really understand how you can't, but my mom doesn't.
HyperLamer
<||bass> and this was the soloution i thought of that was guarinteed to piss off the greatest amount of people

Sesshomaru
Tamaranian

Level: 118

Posts: 6284/8210
EXP: 18171887
For next: 211027

Since: 03-15-04
From: Canada, w00t!
LOL FAD

Since last post: 2 hours
Last activity: 2 hours
Posted on 08-04-05 09:35 PM, in Like them or hate them? Link
Well I do have neighbours, I just don't know them. There's quite a difference.
HyperLamer
<||bass> and this was the soloution i thought of that was guarinteed to piss off the greatest amount of people

Sesshomaru
Tamaranian

Level: 118

Posts: 6285/8210
EXP: 18171887
For next: 211027

Since: 03-15-04
From: Canada, w00t!
LOL FAD

Since last post: 2 hours
Last activity: 2 hours
Posted on 08-04-05 09:36 PM, in Best FFV translation... Link
Why doesn't someone make a translation based on that, then? You don't even need to speak Japanese.
HyperLamer
<||bass> and this was the soloution i thought of that was guarinteed to piss off the greatest amount of people

Sesshomaru
Tamaranian

Level: 118

Posts: 6286/8210
EXP: 18171887
For next: 211027

Since: 03-15-04
From: Canada, w00t!
LOL FAD

Since last post: 2 hours
Last activity: 2 hours
Posted on 08-04-05 09:40 PM, in Luigi vs Mario (formerly SMB3DX) Link
It's true, when you know ASM well enough (and it helps to have thourough knowledge of the game's programming) you can do anything THAT THE HARDWARE IS CAPABLE OF. No amount of learning ASM is going to get Mario 64 on NES. But yes, I'm sure at this point he could make any change that can be made. (I'm the same way with Gameboy, specifically Pok


(edited by The Crimson Chin on 08-04-05 12:41 PM)
HyperLamer
<||bass> and this was the soloution i thought of that was guarinteed to piss off the greatest amount of people

Sesshomaru
Tamaranian

Level: 118

Posts: 6287/8210
EXP: 18171887
For next: 211027

Since: 03-15-04
From: Canada, w00t!
LOL FAD

Since last post: 2 hours
Last activity: 2 hours
Posted on 08-04-05 09:43 PM, in SMB small hacks Link
The problem is FCEU is accurate. Most of these hacks change things in a way that would have the exact same effect on a real NES as on FCEU. Problem is, the emulators that were popular when they were made (NESticle, mainly) were crappy and inaccurate, so the games ran anyway and nobody realized there was a problem.
HyperLamer
<||bass> and this was the soloution i thought of that was guarinteed to piss off the greatest amount of people

Sesshomaru
Tamaranian

Level: 118

Posts: 6288/8210
EXP: 18171887
For next: 211027

Since: 03-15-04
From: Canada, w00t!
LOL FAD

Since last post: 2 hours
Last activity: 2 hours
Posted on 08-04-05 09:45 PM, in smb2 level editor bug!:( Link
Sad to say this editor is HORRIBLY buggy. Otherwise I'd have made an SMB2 hack.

Maybe someday I should work on an editor for this game. But I already have a bazillion projects ahead of it.. other editors, emulators, if you can think of it I've probably made plans to make one.
HyperLamer
<||bass> and this was the soloution i thought of that was guarinteed to piss off the greatest amount of people

Sesshomaru
Tamaranian

Level: 118

Posts: 6289/8210
EXP: 18171887
For next: 211027

Since: 03-15-04
From: Canada, w00t!
LOL FAD

Since last post: 2 hours
Last activity: 2 hours
Posted on 08-04-05 09:47 PM, in How to post links and screenshots Link
Well you should ask in Help/Suggestions. This doesn't really have much to do with SMW.
HyperLamer
<||bass> and this was the soloution i thought of that was guarinteed to piss off the greatest amount of people

Sesshomaru
Tamaranian

Level: 118

Posts: 6290/8210
EXP: 18171887
For next: 211027

Since: 03-15-04
From: Canada, w00t!
LOL FAD

Since last post: 2 hours
Last activity: 2 hours
Posted on 08-04-05 09:50 PM, in Request?? Link
There's a patch which allows you to alter gravity's effect somewhat.
HyperLamer
<||bass> and this was the soloution i thought of that was guarinteed to piss off the greatest amount of people

Sesshomaru
Tamaranian

Level: 118

Posts: 6291/8210
EXP: 18171887
For next: 211027

Since: 03-15-04
From: Canada, w00t!
LOL FAD

Since last post: 2 hours
Last activity: 2 hours
Posted on 08-04-05 09:51 PM, in SMW: Bowser's Return [News + SS] Link
Originally posted by Ice Man
Wow, I didn't expect so much positive comments, thank you all.

BTW: I redid the border from the OW. Well, look at it and tell me if you like it more.



Uh... Level names? Looks good though.
HyperLamer
<||bass> and this was the soloution i thought of that was guarinteed to piss off the greatest amount of people

Sesshomaru
Tamaranian

Level: 118

Posts: 6292/8210
EXP: 18171887
For next: 211027

Since: 03-15-04
From: Canada, w00t!
LOL FAD

Since last post: 2 hours
Last activity: 2 hours
Posted on 08-04-05 09:56 PM, in ATTN: blackhole86 (solar soundtrack) Link
Well the idea is that isn't possible with SMW's music engine.

Is anyone still working on that MP3 streaming thing? If we could have sound effects, that'd be damn cool.
HyperLamer
<||bass> and this was the soloution i thought of that was guarinteed to piss off the greatest amount of people

Sesshomaru
Tamaranian

Level: 118

Posts: 6293/8210
EXP: 18171887
For next: 211027

Since: 03-15-04
From: Canada, w00t!
LOL FAD

Since last post: 2 hours
Last activity: 2 hours
Posted on 08-04-05 09:58 PM, in Midway point woes Link
Unfortunately, if you place a midway gate anywhere, you'll re-enter in the first area of the level. You can do what Atma said, and just start Mario in some far-off room not normally accessible, with a pipe leading to where you want him to actually start.
HyperLamer
<||bass> and this was the soloution i thought of that was guarinteed to piss off the greatest amount of people

Sesshomaru
Tamaranian

Level: 118

Posts: 6294/8210
EXP: 18171887
For next: 211027

Since: 03-15-04
From: Canada, w00t!
LOL FAD

Since last post: 2 hours
Last activity: 2 hours
Posted on 08-04-05 10:01 PM, in ASM hack requests Link
I dunno if these have been suggested, but:
  • Disable L/R scrolling. The current method doesn't seem to work.
  • Force the game to load a level's message box text whenever you enter the level from another. (Eg if I start in level 105, and exit to level 106, it loads 106's text.)
  • Multiple midway points, starting Mario at the most recent one and not going back to the first area of the level.
HyperLamer
<||bass> and this was the soloution i thought of that was guarinteed to piss off the greatest amount of people

Sesshomaru
Tamaranian

Level: 118

Posts: 6295/8210
EXP: 18171887
For next: 211027

Since: 03-15-04
From: Canada, w00t!
LOL FAD

Since last post: 2 hours
Last activity: 2 hours
Posted on 08-04-05 10:32 PM, in ATTN: blackhole86 (solar soundtrack) Link
Disch posted something similar a while back. The general opinion, which I completely agree with, is that unless you can develop said hardware for a real SNES it's not emulation.
HyperLamer
<||bass> and this was the soloution i thought of that was guarinteed to piss off the greatest amount of people

Sesshomaru
Tamaranian

Level: 118

Posts: 6296/8210
EXP: 18171887
For next: 211027

Since: 03-15-04
From: Canada, w00t!
LOL FAD

Since last post: 2 hours
Last activity: 2 hours
Posted on 08-04-05 10:33 PM, in Need a routine creation tutorial or program Link
It's ASM.
HyperLamer
<||bass> and this was the soloution i thought of that was guarinteed to piss off the greatest amount of people

Sesshomaru
Tamaranian

Level: 118

Posts: 6297/8210
EXP: 18171887
For next: 211027

Since: 03-15-04
From: Canada, w00t!
LOL FAD

Since last post: 2 hours
Last activity: 2 hours
Posted on 08-04-05 10:41 PM, in LM Bug (or not) - Side Exit sprite Link
OK, this is a bug... Well, a bug in SMW (or Snes9x ) that LM doesn't account for.


Before this door (to the right) I have a climbing net with 2 doors. (I removed the doors, because there were too many sprites such that Mario would disappear when he went behind the net... may be related to the problem.) This only seems to happen if I go through both doors. It doesn't act like a net, but it looks like one.
(restricted)
(restricted)
HyperLamer
<||bass> and this was the soloution i thought of that was guarinteed to piss off the greatest amount of people

Sesshomaru
Tamaranian

Level: 118

Posts: 6300/8210
EXP: 18171887
For next: 211027

Since: 03-15-04
From: Canada, w00t!
LOL FAD

Since last post: 2 hours
Last activity: 2 hours
Posted on 08-05-05 07:26 AM, in mario land 2 level data Link
Well I poked at the code and figured out the very complicated sprite data. At $E037 is a 2-byte pointer table, indexed by level number, to the sprite data (all data is in ROM bank 3). Level number can be retrieved from RAM address $A269. (For some reason this game keeps everything in SRAM. ) The first level is 0, Tree Zone 1 is 1, that auto-scroll level near the tree is 0x19 and so on. Level 00's data can be found at $E077. Each sprite is 3 bytes. Sprite data ends when the first byte is 0xFF. This is where it gets "fun"... It's easiest if you divide the 3 bytes into groups of bits.

Level 00, first Goomba (21 3B 3E @ $E077):
ABCD EFGH-IJK LMNOP-QRS TUVWX
0010 0001-001 11011-001 11110


Byte 1 = A-H
Byte 2 = I-P
Byte 3 = Q-X

The sprite's X position in pixels, starting from the leftmost point in the level, is determined as such:
0000 EFGH LMNO P000

The sprite's Y position in pixels, starting from the highest point in the level, is determined as such:
???? ???? TUVW X000
(Not sure how it gets the high byte... this code is the work of satan. )

The sprite's type is determined through this nightmarish formula:
1: Get the first byte
2: Rotate it right twice, and clear the low 2 and high 2 bits (AND 0x3C)
3: If bit 2 is set, clear it and set bit 6
4: x = result
5: Get the second byte
6: Rotate right once
7: Swap the low and high halves (eg 1F -> F1)
8: Clear all but the low 3 bits (AND 7)
9: Add x

So to shorten that a bit, I think it would look like: (0FCD E000) + (0000 0IJK).

Also, not sure about X/Y. I think they start from the absolute highest/left-most position possible, but it might just be relative to the highest/left-most position in the level. Have fun!

Also, these RAM addresses might be useful:
AF30: Mario's X position, 16-bit, low byte first
AF32: Mario's Y position, same as x
there are several other position counters here, each with different values, but they only change when the screen scrolls. Most of them appear to have the high byte first. Changing this value doesn't move Mario...
FF97, FFF0 = frame counters; FFF0 stops when game is paused
FF80 = joypad input

AF06=Spriteset, 0-1 (images + behaviour - try 01 in Tree Zone 1!)
AF2B=Seems to indicate what a sprite is doing; changes to 0x20 when a Koopa is moving right and 0 when it's moving left
FFD5=Different values depending on current sprite being processed (01=Koopa, 02=Shell, 03=Thrown shell, 04=Held shell, 08=Paragoomba, 09=Goomba, 0A=Dead Goomba)
FFD9=Current sprite's Y position relative to top of screen
FFDA=Current sprite's X position relative to left of screen
FFDB=Current sprite type

FFDB changes to different animation frames of the current sprite... the game must swap sprite data into these addresses before processing it (hence why changing them won't affect the sprite)

AD00 = Sprite info for sprites that are on the screen
AB00-AB05 = unused (set to 0xFF @ level start)
AB06 = sprite info for entire level

At AB06 the sprite data is decompressed into a nice neat format:
Byte 1, 2: X position, 16-bit, high byte first
Byte 3: Dunno
Byte 4, 5: Y position, 16-bit, high byte first
Byte 6: Sprite type

At AD00, the sprites that are currently active are copied from AB06, and 10 additional bytes are added:
Byte 7, 8: Dunno
Byte 9: Anything besides 02 makes it disappear until you change it back, except for 01 which the game just changes to 02.
Byte 10: How many pixels it is from the left edge of the screen. If it's more than 255 pixels away it becomes inactive. Not sure how it handles sprites being past the left edge.
Byte 11: Current animation frame. Looks like it, anyway.
Byte 12, 13, 14: Colour-related. Changing to 0x10 (or 0x0F for byte 14) changes colours.
Byte 15: Which way the sprite is moving. 1=Left, 2=Right.

Also, the sprite-loading code is at 03:6BBB ($EBBB).

Finally, here's how to decode the sprite graphics:
At 03:40B1 (spriteset 0) or 03:4F11 (spriteset 1) is a 2-byte pointer table to sprite image data, indexed by image number. Image number isn't the same as sprite number. 00 is Goomba, 04 is Koopa. Take the sprite number and multiply by 2, and add to either $40B1 or $4F11 depending on spriteset. This is the pointer to the sprite's image, low byte first, ROM bank 3. Here you'll find a series of 4-byte sprite attributes. Byte 1 is Y position, byte 2 is X position, byte 3 is tile #, byte 4 is tile attributes, just like in the GB's sprite memory. The data ends when byte 1 = 0x80. I'm not sure exactly what the X/Y location are for... if you change them, the sprite's image will keep jumping around.

Goomba's data is at 03:4213:
y x t a
F0 F8 B1 00
F0 00 B1 20
F8 F8 B2 00
F8 FF B4 20
80
which means:
-tile B1, attribute 00, at X=F8, Y=F0
-tile B1, attribute 20, at X=00, Y=F0
-tile B2, attribute 00, at X=F8, Y=F8
-tile B4, attribute 20, at X=FF, Y-F8
-end of data

And here's the graphic loading code I just described, "re-written" in C:
#define SpriteSet 0xAF06
#define FreeOAMSlot 0xFF8D
#define CurrentSpriteY 0xFFD9
#define CurrentSpriteX 0xFFDA
#define CurrentSprite 0xFFDB
mem[SpriteSet] = 0;
mem[0xAF2B] = 0;
mem[FreeOAMSlot] = 0x18;
mem[CurrentSpriteY] = 0;
mem[CurrentSpriteX] = 0;
mem[CurrentSprite] = 0;

//A, B, C, D, E, H, L, BC, DE and HL are CPU registers.
//mem[] refers to GB memory.
//rl() refers to GB opcode 'rl' (rotate left).

void LoadSpriteTSA() //03:4000
{
if(mem[SpriteSet]) = 0
HL = 0x40B1;
else
HL = 0x4F11;
D = 0;
E = mem[CurrentSprite];
E = E << 1;
D = rl(D); //Will rotate the high bit of the previous operation into D
HL += DE; //HL must point to a pointer table of some sort now (0x40C7 for Goomba)
E = mem[HL];
D = mem[HL + 1]; //Because DE now points to the sprite TSA data (0x42C9)
HL = 0xA100 + mem[FreeOAMSlot]; //A100 is a mirror of OAM (FE00)
B = mem[CurrentSpriteY];
C = mem[CurrentSpriteX];
while(mem[DE] != 0x80); //DE = Tile Y position
{
if(mem[0xAF2B] & 0x40)
A = (mem[DE] ^ 0xFF) - 7;
else
A = mem[DE];
A += B;
if(A < 0xA0)
{
mem[HL] = A;
HL++;
DE++; //DE = Tile X position
if(!mem[0xAF2B] & 0x20)
A = mem[DE];
else
A = (mem[DE] ^ 0xFF) - 7;
A += C;
if(A < 0xA8)
{
mem[HL] = A;
HL++;
DE++; //DE = Tile #
mem[HL] = mem[DE];
HL++;
DE++; //DE = Attribute
A = mem[DE] ^ mem[0xAF2B]
mem[hl] = A;
mem[FreeOAMSlot] = L;
DE++; //DE = Y position (next tile)
}
else
{
L--;
mem[HL] = 0;
DE += 3; //DE = Y position (next tile)
}
}
else
DE += 4; //DE = Y position (next tile)
}
}



(edited by The Crimson Chin on 08-04-05 10:36 PM)
(edited by The Crimson Chin on 08-04-05 10:58 PM)
HyperLamer
<||bass> and this was the soloution i thought of that was guarinteed to piss off the greatest amount of people

Sesshomaru
Tamaranian

Level: 118

Posts: 6301/8210
EXP: 18171887
For next: 211027

Since: 03-15-04
From: Canada, w00t!
LOL FAD

Since last post: 2 hours
Last activity: 2 hours
Posted on 08-05-05 08:07 AM, in Useful tools for hacking ROMs. Link
Only N64 debugger I know of is Nemu. Good luck. (Or you can do a bit of simple stuff like memory editing/viewing and breakpoints in RAM if you have a real N64 and Gameshark.)
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409
Acmlm's Board - I2 Archive - - Posts by HyperLamer


ABII


AcmlmBoard vl.ol (11-01-05)
© 2000-2005 Acmlm, Emuz, et al



Page rendered in 0.039 seconds.