yzi information 943 glöps
- general:
- level: user
- personal:
- first name: Yrjö
- last name: Fager
- portals:
- csdb: profile
- slengpung: pictures
- demozoo: profile
- cdcs:
- cdc #1: Dope by Complex [web]
- cdc #2: Second Reality by Future Crew
- cdc #3: State of the Art by Spaceballs [web]
- cdc #4: darkroom by Stellar [web]
- 1k JavaScript Moetkoe by qma
- re: not hiding the cursor ... I don't buy the argument that it wasn't possible to do. You just didn't spend enough hours to make it fit. Your fault, not the compo crew's.
- isokadded on the 2019-08-06 16:54:45
- 1k JavaScript Moetkoe by qma
- One of my favourites in the compo. Simple elements work just fine, as long as you don't try to do things that can't be done.
- rulezadded on the 2019-08-06 16:52:33
- 4k Windows Storm Riders by Unknown Artists [web] & xzm
- The screenshot selection is not the best I've ever seen.
- isokadded on the 2019-08-05 22:59:35
- demo JavaScript AK-03: Hypertension by AateKorjaamo
- "toivottavasti tää ei oo sun biisi" huusi poika toisesta huoneesta kun katsoin tätä
- rulezadded on the 2019-08-05 20:35:27
- demo Windows Hibernate by Pyrotech
- Why whine about the size when it is what was asked for. What you're supposed to do now is this: you see the entries and you think that it's not the maximum that can be done with the allowed resources, and then you start learning and trying to make something better. Which in your opinion must be fairly _easy_?
- isokadded on the 2019-08-05 19:14:48
- demo Windows Hibernate by Pyrotech
- For the record, the compo rules said there's no fixed size limit, but it should be "something that fits on an average USB stick". So 1.5 GB is not even close.
- isokadded on the 2019-08-05 17:30:08
- 4k Windows Black Xor White by oo
- Good stuff. There are a few annoying sharp sounds that I could live without, and some color wouldn't hurt ... though then the name would have to be changed.
- rulezadded on the 2019-08-05 16:55:11
- demo Windows Meet Mr. Internet by Humane
- Perfectly fine demo with all sorts of changing and transitioning nice-looking visuals, spoiled with music that has no structure, no ups or downs, no leading elements and practically no connection with the visuals. Just endless irritating dii-dii-dii-dii-dii-dii-dii-dii-dii. When watching this in the compo I kept thinking what kinds of music-synced part changes could be done all the time, and what a guy with a tracker could have turned this into in 1993. Intro, verse, chorus, bridge, hits, fills, sync points, string pad, drum beat, bassline, groove, melody. Changes.
- rulezadded on the 2019-08-05 14:54:01
- 1k Windows Searching For The Silver Lining by Fulcrum [web]
- Can you publish the source code, I want to replace the crap sound with something tolerable. What it has now is embarrassing to the whole scene.
- isokadded on the 2019-08-05 13:16:58
- 1k Windows attack of the mutant boxes für elise by Fit [web]
- Here's a stripped down untested semi-commented version of the music code used in this 1k intro. Use NASM.
Code:; "MOOD:DOOM" by Yzi ; Music code from "Attack of the Mutant Boxes für Elise" 1k intro shown at Assembly 2019. ; This code is one of my experiments for structuring General MIDI music playback/generation ; for good compression in a Windows 1k intro using the Crinkler compressing linker. ; <---- here you would have your "extern" statements for Windows API functions ----> ; ... section .data_musa data align=1 ; The midiout_handle variable is actually placed inside a DEVMODE struct to save space ; in the actual 1k intro, but shown like this in the music source code example. midiout_handle: db 0x00, 0x00, 0x00, 0x00 ; These defines were used for trying out different ways to place the frame counter %define FRAMECOUNT_DWORD ebp %define FRAMECOUNT_BYTE ebp ; *** MIDI status bytes cheat sheet *** ; 0x0000xxCy : Program Change (xx) on channel y ; 0x00vvnn9y : Note On, channel y, note nn, velocity vv ; 0x00007BBy : All Notes Off, channel y ; 0x00vvnnBy : Control Change (xx) on channel y, controller nn, value vv ; The first 8 notes of "Für Elise", 1 note per nibble, starting from 2nd-lowest nibble melody dd 0x76725376 melody2 dd 0x32023535 ; Second half of the repeating melody, not from Für Elise. bassline dd 0x55CC1133 ; bass and power chords root notes, starting from highest nibble section .code_musa code align=1 ; actual music playroutine, call this once per frame, at around 50-60 fps addTune: pushad mov edx, DWORD [midiout_handle] cmp FRAMECOUNT_DWORD, 64*16+65*16+120 jg exit cmp FRAMECOUNT_DWORD, 64*16+65*16+2 jg endall cmp FRAMECOUNT_DWORD, 65*16+1 je crash jl skip_double_kick_drum cmp FRAMECOUNT_DWORD, 64*16+65*16+1 je crash test FRAMECOUNT_BYTE, 3 jnz skip_double_kick_drum pushad push 0x00502499 ; double kick push edx call [__imp__midiOutShortMsg@8] popad skip_double_kick_drum: test FRAMECOUNT_BYTE, 15 jnz notyet mov esi, FRAMECOUNT_DWORD sub esi, 16 test esi, 128 jnz use_melody2 rol dword [melody], 4 mov ebx, dword [melody] and ebx, 0x0F00 jmp skip_melody_advance use_melody2: rol dword [melody2], 4 mov ebx, dword [melody2] and ebx, 0x0F00 skip_melody_advance: mov ecx, FRAMECOUNT_DWORD and ecx, 16 shl ecx, 18 ; Some MIDI messages are constructed with mov/add and some with lea, ; whichever happened to compress better with Crinkler in this case. ; You have to try out different combinations and look at the Crinkler log. lea eax, [ecx + 0x001F2499] ; kick push eax push edx mov eax, 0x007f2899 ; snare sub eax, ecx push eax push edx lea eax, [0x007f3399+ecx*4] ; ride push eax push edx lea eax, [0x007f3390 + 0x0C00 + ebx] ; MELODY push eax push edx test esi, 127 jnz skip_bassline_advance rol dword [bassline], 4 skip_bassline_advance: mov bh, byte [bassline] and bh, 0x0F lea eax, [ebx+ecx*4+0x00601B9A-0x500] push eax push edx lea eax, [ebx + 0x00603391 - 0x0C00 - 0x500] ; POWER CHORDS push eax push edx add eax, 0x0000700 push eax push edx add eax, 0x0000500 push eax push edx push 0x000022CA ; xxCA = program change on channel 11 push edx push 0x00001EC0 ; xxC0 = program change on channel 1 push edx push 0x00001DC1 ; xxC1 = program change on channel 2 push edx push 0x00007BB0 ; all notes off channel 1 push edx push 0x00007BB1 ; all notes off channel 2 push edx push 0x00007BBA ; all notes off channel 11 (bass) push edx ; fire away all the stuff on the stack call [__imp__midiOutShortMsg@8] call [__imp__midiOutShortMsg@8] call [__imp__midiOutShortMsg@8] call [__imp__midiOutShortMsg@8] call [__imp__midiOutShortMsg@8] call [__imp__midiOutShortMsg@8] call [__imp__midiOutShortMsg@8] call [__imp__midiOutShortMsg@8] call [__imp__midiOutShortMsg@8] call [__imp__midiOutShortMsg@8] call [__imp__midiOutShortMsg@8] call [__imp__midiOutShortMsg@8] call [__imp__midiOutShortMsg@8] call [__imp__midiOutShortMsg@8] notyet: jmp endall crash: push 0x007f3199 ; crash push edx call [__imp__midiOutShortMsg@8] endall: loppu: popad ret section .code_main code align=1 global main main: ; in the actual 1k intro there would be visuals initialization stuff here ; ... push 0 ; framecount initial value ; ... push 0 push 0 push 0 push 0 push midiout_handle call [__imp__midiOutOpen@20] ; ... pop FRAMECOUNT_DWORD main_loop: add FRAMECOUNT_DWORD, 1 call addTune push 27 ; VK_ESCAPE for GetAsyncKeyState() push 1 push 0 push 0 push 0 push 0 call [__imp__PeekMessageA@20] ; <-------- SOMEWHERE AROUND HERE YOU WOULD HAVE YOUR VSYNC / SWAP BUFFERS ------> call [__imp__GetAsyncKeyState@4] test al, al je main_loop exit: ; you don't really have to care about what parameter goes to ExitProcess() ;push 0 call [__imp__ExitProcess@4] - rulezadded on the 2019-08-05 11:58:27
account created on the 2008-08-13 10:06:16
