Points of Required Attention™
Please chime in on a proposed restructuring of the ROM hacking sections.
Views: 88,527,374
Main | FAQ | Uploader | IRC chat | Radio | Memberlist | Active users | Latest posts | Calendar | Stats | Online users | Search 05-04-24 12:29 AM
Guest: Register | Login

Main - Posts by Aaendi

Pages: 1 2 3 4 5

Aaendi
Posted on 04-06-10 07:21 PM, in Megaman Eternity Music Nominations Link | Quote | ID: 129567


Red Koopa
Level: 27

Posts: 75/131
EXP: 109268
Next: 6891

Since: 10-18-09

Last post: 4678 days
Last view: 4338 days
They sound halfway between NES and SNES? Is it NES with an incart sound chip?

Aaendi
Posted on 04-06-10 07:23 PM, in WIP video of Secret Agent Insane Maniac Link | Quote | ID: 129568


Red Koopa
Level: 27

Posts: 76/131
EXP: 109268
Next: 6891

Since: 10-18-09

Last post: 4678 days
Last view: 4338 days
Posted by Nintendude88
I really like the looks of what your doing. It's very impressive, keep up the great work.


Thanks for the complement!

Aaendi
Posted on 04-10-10 01:01 AM, in Finally shopping for an SNES Flash Cart Link | Quote | ID: 129686


Red Koopa
Level: 27

Posts: 77/131
EXP: 109268
Next: 6891

Since: 10-18-09

Last post: 4678 days
Last view: 4338 days
I need one myself soon, to test Secret Agent Insane Maniac on real hardware.

Aaendi
Posted on 04-10-10 11:49 PM, in Optimizing Tilemaps Around SNES Space Limitations Link | Quote | ID: 129722


Red Koopa
Level: 27

Posts: 78/131
EXP: 109268
Next: 6891

Since: 10-18-09

Last post: 4678 days
Last view: 4338 days
I don't know what your using, but I use Xkas and I write "org $008000" before my code, or else it doesn't find labels properly.

Aaendi
Posted on 04-12-10 12:56 AM, in WIP video of Secret Agent Insane Maniac Link | Quote | ID: 129775


Red Koopa
Level: 27

Posts: 79/131
EXP: 109268
Next: 6891

Since: 10-18-09

Last post: 4678 days
Last view: 4338 days
http://www.youtube.com/watch?v=F4Rj8apsoXI

New update.

Aaendi
Posted on 04-27-10 01:09 AM, in WIP video of Secret Agent Insane Maniac Link | Quote | ID: 130581


Red Koopa
Level: 27

Posts: 80/131
EXP: 109268
Next: 6891

Since: 10-18-09

Last post: 4678 days
Last view: 4338 days
http://www.youtube.com/watch?v=sOBw0OZjTfA

Another new update

Aaendi
Posted on 11-07-10 03:20 AM, in SNES sprite rotation without FX chip Link | Quote | ID: 137726


Red Koopa
Level: 27

Posts: 88/131
EXP: 109268
Next: 6891

Since: 10-18-09

Last post: 4678 days
Last view: 4338 days
This can come in handy if you want to make your SNES demo/game/hack blow everybody elses out of the water.

Use this code to software rotate sprites into ram before the level starts. It uses the PPU for data organization purposes, so it doesn't work during active display, so make sure to use a forced blanked load time before the level your using it in. If you want to use 128 kB of work ram to store the rendered sprites, you can dma it back from the PPU to the CPU side.

Sprites to use rotation need to be stored in the ROM as 256x256 8-bit bitmaps. You can store several sprites in the same bitmap, just as long as you give enough space between them so its neighbor sprites don't get rendered inside the box of rotation.

It can render up to 180 16x16 sprites per second.




!add = "clc : adc"
!sub = "sec : sbc"
!angle = "$00"
!bank = "$01"
!sine = "$02"
!cosine = "$04"
!x_pixel = "$06"
!y_pixel = "$08"
!x_displacement = "$0a"
!y_displacement = "$0c"
!width = "$0e"
!height = "$10"
!destination = "$12"
!pixel_address = "$20"
!bit_plane_1 = "$40"
!bit_plane_2 = "$41"
!bit_plane_3 = "$42"
!bit_plane_4 = "$43"



sprite_rotation:


sep #$20
lda #$84
sta $2115 ;; full graphics 4-bit v-ram loading 0aaaaaaabbbccccc -> 0aaaaaaacccccbbb
lda !bank ;; the bank that holds the 8-bit 256x256 bitmap
pha ;; of sprite being rotated
plb


rep #$30

lda !angle ;; find sine and cosine
asl
and #$01fe
tax
lda sine_table+$000000,x
sta !sine
txa
!add #$0080
and #$01fe
tax
lda sine_table+$000000,x
sta !cosine


lda !sine
!add !cosine ;; find the negative x displacement
asl #2 ;; 4 pixels up left from center
sta !x_displacement

lda !cosine ;; find the negative y displacement
!sub !sine ;; 4 pixels up left from center
asl #2
sta !y_displacement

lda !width ;; add center of sprite to x pixel coordinate
tay
asl #2
xba
!add !x_pixel
find_x_pixel:
!sub !x_displacement ;; subtract (x displacement)*width from x pixel
dey ;; coordinate
bne find_x_pixel
sta !x_pixel

lda !width ;; add center of sprite to y pixel coordinate
tay
asl #2
xba
!add !y_pixel
find_y_pixel: ;; subtract (y displacement)*width from y pixel
!sub !y_displacement ;; coordinate
dey
bne find_y_pixel
sta !y_pixel


render_sprite: ;; push x and y pixel coordinates
lda !x_pixel ;; and width onto stack to save
pha ;; for rendering the line after it
lda !y_pixel
pha
lda !width
pha
lda !destination
sta $2116
render_line:
jsr render_8_pixels
dec !width
bne render_line ;; repeat rendering 8-pixels "width" times
rep #$20
pla ;; recover x and y coordinates and width
sta !width ;; next line of pixels
pla
!add !cosine
sta !y_pixel ;; find new starting point for y coordinate
pla
!add !sine
sta !x_pixel ;; find new starting point for x coordinate
lda !destination
!add #$0020
sta !destination ;; set v-ram address reg at the next line of pixels
dec !height
bne render_sprite
rts






render_8_pixels:
rep #$30
lda !y_pixel
sta !pixel_address+2 ;; unrolled loop for finding y coordinate of 8 pixels
!sub !sine
sta !pixel_address+6
!sub !sine
sta !pixel_address+10
!sub !sine
sta !pixel_address+14
!sub !sine
sta !pixel_address+18
!sub !sine
sta !pixel_address+22
!sub !sine
sta !pixel_address+26
!sub !sine
sta !pixel_address+30
!sub !sine
sta !y_pixel
lda !x_pixel
sta !pixel_address+1 ;; unrolled loop for finding x coordinate of 8 pixels
!add !cosine ;; top byte (whole number) of x coordinate is written over
sta !pixel_address+5 ;; bottom byte (decimal) of y coordinate creating
!add !cosine ;; 16 bit pixel addresses in the form of yyyyyyyyxxxxxxxx
sta !pixel_address+9
!add !cosine
sta !pixel_address+13
!add !cosine
sta !pixel_address+17
!add !cosine
sta !pixel_address+21
!add !cosine
sta !pixel_address+25
!add !cosine
sta !pixel_address+29
!add !cosine
sta !x_pixel
sep #$20
ldx !pixel_address+2 ;; unrolled loop for fetching pixels and
lda $0000,x
ror ;; turning 8-bit packed pixel format into 4-bit planar
rol !bit_plane_1
ror
rol !bit_plane_2
ror
rol !bit_plane_3
ror
rol !bit_plane_4
ldx !pixel_address+6
lda $0000,x
ror
rol !bit_plane_1
ror
rol !bit_plane_2
ror
rol !bit_plane_3
ror
rol !bit_plane_4
ldx !pixel_address+10
lda $0000,x
ror
rol !bit_plane_1
ror
rol !bit_plane_2
ror
rol !bit_plane_3
ror
rol !bit_plane_4
ldx !pixel_address+14
lda $0000,x
ror
rol !bit_plane_1
ror
rol !bit_plane_2
ror
rol !bit_plane_3
ror
rol !bit_plane_4
ldx !pixel_address+18
lda $0000,x
ror
rol !bit_plane_1
ror
rol !bit_plane_2
ror
rol !bit_plane_3
ror
rol !bit_plane_4
ldx !pixel_address+22
lda $0000,x
ror
rol !bit_plane_1
ror
rol !bit_plane_2
ror
rol !bit_plane_3
ror
rol !bit_plane_4
ldx !pixel_address+26
lda $0000,x
ror
rol !bit_plane_1
ror
rol !bit_plane_2
ror
rol !bit_plane_3
ror
rol !bit_plane_4
ldx !pixel_address+30
lda $0000,x
ror
rol !bit_plane_1
ror
rol !bit_plane_2
ror
rol !bit_plane_3
ror
rol !bit_plane_4
ldx !bit_plane_1
stx $2118 ;; send the 4 bytes to v-ram address port and let the PPU do the rest
ldx !bit_plane_3
stx $2118
rts




sine_table:
dw 0,6,13,19,25,31,38,44,50,56,62,68,74,80,86,92,98,104,109,115,121,126,132,137,142
dw 147,152,157,162,167,172,177,181,185,190,194,198,202,206,209,213,216,220,223,226,229
dw 231,234,237,239,241,243,245,247,248,250,251,252,253,254,255,255,256,256,256,256,256
dw 255,255,254,253,252,251,250,248,247,245,243,241,239,237,234,231,229,226,223,220,216
dw 213,209,206,202,198,194,190,185,181,177,172,167,162,157,152,147,142,137,132,126,121
dw 115,109,104,98,92,86,80,74,68,62,56,50,44,38,31,25,19,13,0,-6,-13,-19,-25,-31,-38
dw -44,-50,-56,-62,-68,-74,-80,-86,-92,-98,-104,-109,-115,-121,-126,-132,-137,-142
dw -147,-152,-157,-162,-167,-172,-177,-181,-185,-190,-194,-198,-202,-206,-209,-213,-216
dw -220,-223,-226,-229,-231,-234,-237,-239,-241,-243,-245,-247,-248,-250,-251,-252,-253
dw -254,-255,-255,-256,-256,-256,-256,-256,-255,-255,-254,-253,-252,-251,-250,-248
dw -247,-245,-243,-241,-239,-237,-234,-231,-229,-226,-223,-220,-216,-213,-209,-206,-202
dw -198,-194,-190,-185,-181,-177,-172,-167,-162,-157,-152,-147,-142,-137,-132,-126,-121
dw -115,-109,-104,-98,-92,-86,-80,-74,-68,-62,-56,-50,-44,-38,-31,-25,-19,-13,-6



Aaendi
Posted on 11-07-10 12:50 PM, in SNES sprite rotation without FX chip Link | Quote | ID: 137733


Red Koopa
Level: 27

Posts: 89/131
EXP: 109268
Next: 6891

Since: 10-18-09

Last post: 4678 days
Last view: 4338 days
This should work without using the PPU. Just make sure you remember to set $2115 to #$84 when your dma-ing, and remember your using "4-bit full graphics" organization.




!add = "clc : adc"
!sub = "sec : sbc"
!angle = "$00"
!bank = "$01"
!sine = "$02"
!cosine = "$04"
!x_pixel = "$06"
!y_pixel = "$08"
!x_displacement = "$0a"
!y_displacement = "$0c"
!width = "$0e"
!height = "$10"
!destination = "$12"
!pixel_address = "$20"
!bit_plane_1 = "$40"
!bit_plane_2 = "$41"
!bit_plane_3 = "$42"
!bit_plane_4 = "$43"



sprite_rotation:


sep #$20
lda !bank ;; the bank that holds the 8-bit 256x256 bitmap
pha ;; of sprite being rotated
plb


rep #$30

lda !angle ;; find sine and cosine
asl
and #$01fe
tax
lda sine_table+$000000,x
sta !sine
txa
!add #$0080
and #$01fe
tax
lda sine_table+$000000,x
sta !cosine


lda !sine
!add !cosine ;; find the negative x displacement
asl #2 ;; 4 pixels up left from center
sta !x_displacement

lda !cosine ;; find the negative y displacement
!sub !sine ;; 4 pixels up left from center
asl #2
sta !y_displacement

lda !width ;; add center of sprite to x pixel coordinate
tay
asl #2
xba
!add !x_pixel
find_x_pixel:
!sub !x_displacement ;; subtract (x displacement)*width from x pixel
dey ;; coordinate
bne find_x_pixel
sta !x_pixel

lda !width ;; add center of sprite to y pixel coordinate
tay
asl #2
xba
!add !y_pixel
find_y_pixel: ;; subtract (y displacement)*width from y pixel
!sub !y_displacement ;; coordinate
dey
bne find_y_pixel
sta !y_pixel


render_sprite: ;; push x and y pixel coordinates
lda !x_pixel ;; and width onto stack to save
pha ;; for rendering the line after it
lda !y_pixel
pha
lda !width
pha
lda !destination
pha
render_line:
jsr render_8_pixels
dec !width
bne render_line ;; repeat rendering 8-pixels "width" times
pla
!add #$0040
sta !destination
pla ;; recover x and y coordinates and width
sta !width ;; next line of pixels
pla
!add !cosine
sta !y_pixel ;; find new starting point for y coordinate
pla
!add !sine
sta !x_pixel ;; find new starting point for x coordinate
dec !height
bne render_sprite
rts






render_8_pixels:
rep #$30
lda !y_pixel
sta !pixel_address+2 ;; unrolled loop for finding y coordinate of 8 pixels
!sub !sine
sta !pixel_address+6
!sub !sine
sta !pixel_address+10
!sub !sine
sta !pixel_address+14
!sub !sine
sta !pixel_address+18
!sub !sine
sta !pixel_address+22
!sub !sine
sta !pixel_address+26
!sub !sine
sta !pixel_address+30
!sub !sine
sta !y_pixel
lda !x_pixel
sta !pixel_address+1 ;; unrolled loop for finding x coordinate of 8 pixels
!add !cosine ;; top byte (whole number) of x coordinate is written over
sta !pixel_address+5 ;; bottom byte (decimal) of y coordinate creating
!add !cosine ;; 16 bit pixel addresses in the form of yyyyyyyyxxxxxxxx
sta !pixel_address+9
!add !cosine
sta !pixel_address+13
!add !cosine
sta !pixel_address+17
!add !cosine
sta !pixel_address+21
!add !cosine
sta !pixel_address+25
!add !cosine
sta !pixel_address+29
!add !cosine
sta !x_pixel
sep #$20
ldx !pixel_address+2 ;; unrolled loop for fetching pixels and
lda $0000,x
ror ;; turning 8-bit packed pixel format into 4-bit planar
rol !bit_plane_1
ror
rol !bit_plane_2
ror
rol !bit_plane_3
ror
rol !bit_plane_4
ldx !pixel_address+6
lda $0000,x
ror
rol !bit_plane_1
ror
rol !bit_plane_2
ror
rol !bit_plane_3
ror
rol !bit_plane_4
ldx !pixel_address+10
lda $0000,x
ror
rol !bit_plane_1
ror
rol !bit_plane_2
ror
rol !bit_plane_3
ror
rol !bit_plane_4
ldx !pixel_address+14
lda $0000,x
ror
rol !bit_plane_1
ror
rol !bit_plane_2
ror
rol !bit_plane_3
ror
rol !bit_plane_4
ldx !pixel_address+18
lda $0000,x
ror
rol !bit_plane_1
ror
rol !bit_plane_2
ror
rol !bit_plane_3
ror
rol !bit_plane_4
ldx !pixel_address+22
lda $0000,x
ror
rol !bit_plane_1
ror
rol !bit_plane_2
ror
rol !bit_plane_3
ror
rol !bit_plane_4
ldx !pixel_address+26
lda $0000,x
ror
rol !bit_plane_1
ror
rol !bit_plane_2
ror
rol !bit_plane_3
ror
rol !bit_plane_4
ldx !pixel_address+30
lda $0000,x
ror
rol !bit_plane_1
ror
rol !bit_plane_2
ror
rol !bit_plane_3
ror
rol !bit_plane_4
rep #$30
ldx !destination
lda !bit_plane_1
sta $7e0000,x
lda !bit_plane_3
sta $7e0002,x
inx #4
stx !destination
rts




sine_table:
dw 0,6,13,19,25,31,38,44,50,56,62,68,74,80,86,92,98,104,109,115,121,126,132,137,142
dw 147,152,157,162,167,172,177,181,185,190,194,198,202,206,209,213,216,220,223,226,229
dw 231,234,237,239,241,243,245,247,248,250,251,252,253,254,255,255,256,256,256,256,256
dw 255,255,254,253,252,251,250,248,247,245,243,241,239,237,234,231,229,226,223,220,216
dw 213,209,206,202,198,194,190,185,181,177,172,167,162,157,152,147,142,137,132,126,121
dw 115,109,104,98,92,86,80,74,68,62,56,50,44,38,31,25,19,13,0,-6,-13,-19,-25,-31,-38
dw -44,-50,-56,-62,-68,-74,-80,-86,-92,-98,-104,-109,-115,-121,-126,-132,-137,-142
dw -147,-152,-157,-162,-167,-172,-177,-181,-185,-190,-194,-198,-202,-206,-209,-213,-216
dw -220,-223,-226,-229,-231,-234,-237,-239,-241,-243,-245,-247,-248,-250,-251,-252,-253
dw -254,-255,-255,-256,-256,-256,-256,-256,-255,-255,-254,-253,-252,-251,-250,-248
dw -247,-245,-243,-241,-239,-237,-234,-231,-229,-226,-223,-220,-216,-213,-209,-206,-202
dw -198,-194,-190,-185,-181,-177,-172,-167,-162,-157,-152,-147,-142,-137,-132,-126,-121
dw -115,-109,-104,-98,-92,-86,-80,-74,-68,-62,-56,-50,-44,-38,-31,-25,-19,-13,-6



Aaendi
Posted on 11-10-10 03:12 AM, in What the hell people?! Link | Quote | ID: 137777


Red Koopa
Level: 27

Posts: 90/131
EXP: 109268
Next: 6891

Since: 10-18-09

Last post: 4678 days
Last view: 4338 days
It's not only this website, but the internet in general is turning into an abandoned warhouse filled with old garbage nobody wants anymore. A wasteland with only the artifacts of an ancient civilization.

Aaendi
Posted on 11-10-10 07:45 PM, in What the hell people?! Link | Quote | ID: 137811


Red Koopa
Level: 27

Posts: 91/131
EXP: 109268
Next: 6891

Since: 10-18-09

Last post: 4678 days
Last view: 4338 days
I'm surprised at how few people are interested in my SNES software sprite rotation algorithm. Isn't anybody surprised that I somehow came up with an algorithm for doing something that was thought of as impossible, especially on a system that people claim not being capable of moving 4 sprites onscreen without major slowdown?

Aaendi
Posted on 11-10-10 09:55 PM, in What the hell people?! Link | Quote | ID: 137814


Red Koopa
Level: 27

Posts: 92/131
EXP: 109268
Next: 6891

Since: 10-18-09

Last post: 4678 days
Last view: 4338 days
Posted by Kawa
I'm sorry, who made that claim? Cos that's just plain ludicrous.



Lets see:

sega-16.com
PCEngine.com
smwcentral.com
wikipedia.org
video game magazines
Capcom's programmers
Konami's programmers
Treasure's programmers
Youtube comments

Aaendi
Posted on 11-11-10 12:07 AM, in What the hell people?! Link | Quote | ID: 137819


Red Koopa
Level: 27

Posts: 93/131
EXP: 109268
Next: 6891

Since: 10-18-09

Last post: 4678 days
Last view: 4338 days
Posted by Trax
Someone's trying to claim more than his due here, apparently...


What does that mean?

Aaendi
Posted on 11-11-10 12:14 AM, in SNES sprite rotation without FX chip Link | Quote | ID: 137820


Red Koopa
Level: 27

Posts: 94/131
EXP: 109268
Next: 6891

Since: 10-18-09

Last post: 4678 days
Last view: 4338 days
http://acmlm.kafuka.org/board/thread.php?id=6615

I'm reposting this here because there is more activity here in the ROM hacking section.

Aaendi
Posted on 11-11-10 12:35 AM, in What the hell people?! Link | Quote | ID: 137823


Red Koopa
Level: 27

Posts: 95/131
EXP: 109268
Next: 6891

Since: 10-18-09

Last post: 4678 days
Last view: 4338 days
Okay, I was exaggerating a little bit.


sega-16.com - definately did

PCEngine.com - definately did

smwcentral.com - uncertain. Couldn't figure out what there opinion was. It seemed like they were always intentionally changing their opinions to whatever I didn't want to hear.

wikipedia.org - several years ago

video game magazines - some of them, forgot which ones

Capcom's programmers - Possibly a faked interview

Konami's programmers - Possibly a faked interview

Treasure's programmers - Possibly a faked interview

Youtube comments - definately did

Aaendi
Posted on 11-11-10 01:08 AM, in What the hell people?! Link | Quote | ID: 137825


Red Koopa
Level: 27

Posts: 96/131
EXP: 109268
Next: 6891

Since: 10-18-09

Last post: 4678 days
Last view: 4338 days
I thought Kawa was refering to the last part of my post?

Aaendi
Posted on 11-11-10 08:00 PM, in What the hell people?! (rev. 3 of 11-11-10 08:04 PM) Link | Quote | ID: 137846


Red Koopa
Level: 27

Posts: 97/131
EXP: 109268
Next: 6891

Since: 10-18-09

Last post: 4678 days
Last view: 4338 days
That's what I thought you were refering to. That idea was circulating through the internet for several years, and it has only recently been cleared up. As far as I know, I don't think anybody on this website was part of that crowd.

I don't know where the myth originated from, but they all claimed that they got it from what Capcom/Konami/Irem programmers told them.

Aaendi
Posted on 11-23-10 10:13 PM, in citations are NOT proof! (rev. 3 of 11-23-10 10:17 PM) Link | Quote | ID: 138097


Red Koopa
Level: 27

Posts: 98/131
EXP: 109268
Next: 6891

Since: 10-18-09

Last post: 4678 days
Last view: 4338 days
Every single debate I've ever had, I lost. Do you know why? Because the so-called "rules" of debate that everybody and their grandmother rely on are so ****ed up, that they force the idiot to win everytime, just because only the idiot is stupid enough to follow them. If the smart guy "me" tries to follow these so-called rules, I can't get my point across.

This is how EVERY single "debate" I ever had went.

1) I tell them some good news/philosophy/insight to make people happier and mentally/emotionally healthier, etc.

2) The other people think that just because I make a post, they HAVE to "debate" it. And when I say "debate" I mean, intentionally change their opinion to be strongly against my statement, despite the fact I said something they wanted to hear.

3) I show them some evidence, reason, explanation.

4) They ask me where did I get my information from.

5) I tell them it is just long abondonned common sense trying to be unleashed from their mind. No need for information sources, the knowledge is inside of you.

6) They go around coping and pasting poorly-written and contradictory articles from websites like wikipedia, claiming that they are "right" because they have a citation, and I am "wrong" just because I don't. Don't forget their personal attacks against me, sandwiched inbetween their wikipedia quotations.


BTW, I don't like digging up past arguments, so please don't ask me to.

Aaendi
Posted on 11-23-10 11:13 PM, in citations are NOT proof! Link | Quote | ID: 138101


Red Koopa
Level: 27

Posts: 99/131
EXP: 109268
Next: 6891

Since: 10-18-09

Last post: 4678 days
Last view: 4338 days
Posted by blackhole89
So wait, the point of this rant simply is that you are smart and always to be considered in the right even if evidence to the contrary is presented?


Because they never give me any "evidence to the contrary."

Aaendi
Posted on 11-24-10 08:13 PM, in citations are NOT proof! Link | Quote | ID: 138115


Red Koopa
Level: 27

Posts: 100/131
EXP: 109268
Next: 6891

Since: 10-18-09

Last post: 4678 days
Last view: 4338 days
Posted by Ailure

And what insights? A lot of the ones floating around are very incorrect I find, such as the classic "Only 10% of the brain is used while awake" claim.


Thankyou. You just described what I was trying to say perfectly.

Aaendi
Posted on 11-25-10 06:08 PM, in citations are NOT proof! Link | Quote | ID: 138143


Red Koopa
Level: 27

Posts: 101/131
EXP: 109268
Next: 6891

Since: 10-18-09

Last post: 4678 days
Last view: 4338 days
Posted by blackhole89
That still does not mean citations are not better than "the proof is in my mind, bow before me".


Have it ever bothered you when a citation doesn't have a citation? Or if the citation's citation doesn't have a citation? Or if the citation's citation's citation does not have a citation?
Pages: 1 2 3 4 5


Main - Posts by Aaendi

Acmlmboard 2.1+4δ (2023-01-15)
© 2005-2023 Acmlm, blackhole89, Xkeeper et al.

Page rendered in 0.236 seconds. (337KB of memory used)
MySQL - queries: 133, rows: 165/165, time: 0.227 seconds.