Page 1 of 1

Sadness...

Posted: Thu Nov 29, 2007 3:43 pm
by TmEE co.(TM)
While adding something into my sound engine that Tulio really wanted, in one part of the engine, my nice code got so ugly :

Code: Select all

SetVolume1            ; Sets volume on Ch0...Ch2 (C=Ch, B=Vol)
 PUSH HL
 LD   A, B
 INC  A
 NEG
 AND  $7F
 LD   B, A
 LD   D, 0
 LD   A, C
 ADD  A
 ADD  A
 ADD  $80
 LD   E, A
 LD   H, 0
 LD   A, $60
 ADD  C
 LD   L, A
 LD   A, (HL)
 LD   HL, FMPORT1
 OR   A
 JP   Z, Algo01
 DEC  A
 JP   Z, Algo01
 DEC  A
 JP   Z, Algo01
 DEC  A
 JP   Z, Algo01
 DEC  A
 JP   Z, Algo11
 DEC  A
 JP   Z, Algo21
 DEC  A
 JP   Z, Algo21
 DEC  A
 JP   Z, Algo31
 RET
Algo01                ; Change only in operator 4
 LD   A, $4C
 ADD  C
 LD   (HL), A
 INC  E
 INC  E
 INC  E
 LD   A, (DE)
 ADD  B
 BIT  7, A
 JP   Z, NoOp4Zero01
 LD   A, $7F
NoOp4Zero01
 LD   (FMPORT2), A
 POP  HL
 RET
Algo11                ; Change in operators 3 and 4
 LD   A, $48          ; Set op3
 ADD  C
 LD   (HL), A
 LD   C, A
 INC  E
 INC  E
 LD   A, (DE)
 ADD  B
 BIT  7, A
 JP   Z, NoOp3Zero11
 LD   A, $7F
NoOp3Zero11
 LD   (FMPORT2), A
 NOP  #2
 LD   A, C
 ADD  $04             ; Set op4
 LD   (HL), A
 LD   C, A
 INC  E
 LD   A, (DE)
 ADD  B
 BIT  7, A
 JP   Z, NoOp4Zero11
 LD   A, $7F
NoOp4Zero11
 LD   (FMPORT2), A
 POP  HL
 RET
Algo21                ; Change in operators 2, 3 and 4
 LD   A, $44          ; Set op2
 ADD  C
 LD   (HL), A
 LD   C, A
 INC  E
 LD   A, (DE)
 ADD  B
 BIT  7, A
 JP   Z, NoOp2Zero21
 LD   A, $7F
NoOp2Zero21
 LD   (FMPORT2), A
 NOP  #2
 LD   A, C
 ADD  $04             ; Set op3
 LD   (HL), A
 LD   C, A
 INC  E
 LD   A, (DE)
 ADD  B
 BIT  7, A
 JP   Z, NoOp3Zero21
 LD   A, $7F
NoOp3Zero21
 LD   (FMPORT2), A
 NOP  #2
 LD   A, C
 ADD  $04             ; Set op4
 LD   (HL), A
 LD   C, A
 INC  E
 LD   A, (DE)
 ADD  B
 BIT  7, A
 JP   Z, NoOp4Zero21
 LD   A, $7F
NoOp4Zero21
 LD   (FMPORT2), A
 POP  HL
 RET
Algo31                ; Change in all operators
 LD   A, $40          ; Set op1
 ADD  C
 LD   (HL), A
 LD   C, A
 LD   A, (DE)
 ADD  B
 BIT  7, A
 JP   Z, NoOp1Zero31
 LD   A, $7F
NoOp1Zero31
 LD   (FMPORT2), A
 NOP  #2
 LD   A, C
 ADD  $04             ; Set op2
 LD   (HL), A
 LD   C, A
 INC  E
 LD   A, (DE)
 ADD  B
 BIT  7, A
 JP   Z, NoOp2Zero31
 LD   A, $7F
NoOp2Zero31
 LD   (FMPORT2), A
 NOP  #2
 LD   A, C
 ADD  $04             ; Set op3
 LD   (HL), A
 LD   C, A
 INC  E
 LD   A, (DE)
 ADD  B
 BIT  7, A
 JP   Z, NoOp3Zero31
 LD   A, $7F
NoOp3Zero31
 LD   (FMPORT2), A
 NOP  #2
 LD   A, C
 ADD  $04             ; Set op4
 LD   (HL), A
 LD   C, A
 INC  E
 LD   A, (DE)
 ADD  B
 BIT  7, A
 JP   Z, NoOp4Zero31
 LD   A, $7F
NoOp4Zero31
 LD   (FMPORT2), A
 POP  HL
 RET
Before it was like this :

Code: Select all

SetVolume2            ; Sets volume on Ch3...Ch5 (C=Ch, B=Vol)
 PUSH HL
 LD   A, B
 INC  A
 NEG
 AND  $7F
 LD   B, A
 LD   H, 0
 LD   A, $63
 ADD  C
 LD   L, A
 LD   A, (HL)
 LD   HL, FMPORT4
 OR   A
 JP   Z, Algo02
 DEC  A
 JP   Z, Algo02
 DEC  A
 JP   Z, Algo02
 DEC  A
 JP   Z, Algo02
 DEC  A
 JP   Z, Algo12
 DEC  A
 JP   Z, Algo22
 DEC  A
 JP   Z, Algo22
 DEC  A
 JP   Z, Algo32
 RET
Algo02                ; Change only in operator 4
 LD   A, $4C
 ADD  C
 LD   (FMPORT3), A
 NOP  #3
 LD   (HL), B
 POP  HL
 RET
Algo12                ; Change in operators 3 and 4
 LD   A, $48          ; Set op2
 ADD  C
 LD   (FMPORT3), A
 NOP  #3
 LD   (HL), B
 NOP  #3
 ADD  $04             ; Set op4
 LD   (FMPORT3), A
 NOP  #3
 LD   (HL), B
 POP  HL
 RET
Algo22                ; Change in operators 2, 3 and 4
 LD   A, $44          ; Set op2
 ADD  C
 LD   (FMPORT3), A
 NOP  #3
 LD   (HL), B
 NOP  #3
 ADD  $04             ; Set op3
 LD   (FMPORT3), A
 NOP  #3
 LD   (HL), B
 NOP  #3
 ADD  $04             ; Set op4
 LD   (FMPORT3), A
 NOP  #3
 LD   (HL), B
 POP  HL
 RET
Algo32                ; Change in all operators
 LD   A, $40          ; Set op1
 ADD  C
 LD   (FMPORT3), A
 NOP  #3
 LD   (HL), B
 NOP  #3
 ADD  $04             ; Set op2
 LD   (FMPORT3), A
 NOP  #3
 LD   (HL), B
 NOP  #3
 ADD  $04             ; Set op3
 LD   (FMPORT3), A
 NOP  #3
 LD   (HL), B
 NOP  #3
 ADD  $04             ; Set op4
 LD   (FMPORT3), A
 NOP  #3
 LD   (HL), B
 POP  HL
 RET
Least someone is happy now...

Posted: Thu Nov 29, 2007 5:34 pm
by TulioAdriano
Hey Tiido, cheer up... :)

You're writing the most powerful FM driver ever for MegaDrive! You should be proud to be pushing little Genny beyond limits no one did before! :D

Posted: Thu Nov 29, 2007 6:19 pm
by TmEE co.(TM)
Well, you've got a point there... I have to add vibrato and slides, and it is ULTIMATE :D

Posted: Thu Nov 29, 2007 9:38 pm
by ob1
[quote="TulioAdriano"]Hey Tiido, cheer up... :)

You're writing the most powerful FM driver ever for MegaDrive! You should be proud to be pushing little Genny beyond limits no one did before! :D[/quote]

+1

You have to be proud TmEE. A very good job, and you're so young ! So congrats. Truelly.