If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!
Vex Block
Jump to navigation
Jump to search
Cleanup > Pages missing date references
Cleanup > Pages missing developer references
Cleanup > Pages missing publisher references
Cleanup > To do
Games > Games by content > Games with uncompiled source code
Games > Games by developer > Games developed by Sachen
Games > Games by platform
Games > Games by publisher > Games published by Sachen > Games published by Commin
Games > Games by release date > Games released in 1993
Games > Unlicensed games > Unlicensed Game Boy games
The Cutting Room Floor > Unimportant Awards > Game Boy games
Vex Block |
---|
Developer: Sachen This game has uncompiled source code. |
Vex Block is a game by Sachen, under their moniker Commin. It is a clone of the arcade game Klax, which also received a Game Boy port, rendering this version useless. Beware the invisible blocks that make it impossible to complete the game!
To do: Rip everything is beyond these invisible blocks. |
Source Code
There is uncompiled source code located in the game's ROM, beginning at hex address 51FF:
LD A,0 STA GAME_STAGE JP START_SUB CACULATE_MAKE_GAME: LDA STAGE_OVER_DELAY CP 0 JR Z,CAL_TOTAL_MAKE JP OVER_MAKE CAL_TOTAL_MAKE: LDA STAGE_STATUS+0 CP 3 JR Z,CACULATE_HORIZON CP 2 JR Z,CACULATE_DIAGON CP 1 JR Z,CACULATE_CONTING CACULATE_POINT: LDA STAGE_STATUS+1 AND 0FH STA TEMP4 LDA STAGE_STATUS+1 SWAPA AND 0FH STA TEMP5 LD HL,TEMP5 LDA STAGE_SCORE+3 ;SECOND VAL. LD B,A LDA TEMP4 SUB A,B JR NC,PASS_INC LD A,(HL) CP 0 JR Z,OVER_SCORE DEC (HL) LDA TEMP4 ADD A,10 SUB A,B PASS_INC: AND 00001111B STA TEMP4 LDA STAGE_SCORE+2 ; FIRST VAL. LD B,A LDA TEMP5 SUB A,B BIT 7,A JR Z,PASS_LAST OVER_SCORE: LD A,0 STA STAGE_STATUS+2 JR SET_OVER_DELAY PASS_LAST: AND 00001111B SWAPA LD HL,TEMP4 OR (HL) JR Z,OVER_SCORE STA STAGE_STATUS+2 RET CACULATE_CONTING: LDA STAGE_CONTING LD B,A CALL CACULATE_MAKE_SUBX RET NZ JR SET_OVER_DELAY CACULATE_DIAGON: LDA STAGE_DIAGON LD B,A CALL CACULATE_MAKE_SUBX RET NZ JR SET_OVER_DELAY CACULATE_HORIZON: LDA STAGE_HORIZON LD B,A CALL CACULATE_MAKE_SUBX RET NZ SET_OVER_DELAY: LD A,20H STA STAGE_OVER_DELAY RET CACULATE_MAKE_SUBX: LDA STAGE_STATUS+1;CURRENT. SUB B STA STAGE_STATUS+2 RET POINT_WORD: ;SCORE NUMBER. DB 'YOU MUST',RTN DB 'GET SCORE',RTN DB 'TO PASS THIS STAGE!',END CONTING_WORD: DB 'YOU MUST',RTN DB 'MAKE POINTS',RTN DB 'TO PASS THIS STAGE!',END DIAGON_WORD: DB 'YOU MUST',RTN DB 'GET DIAGONALS',RTN DB 'TO PASS THIS STAGE!',END HORIZON_WORD: DB 'YOU MUST',RTN DB 'GET HORIZONALS',RTN DB 'TO PASS THIS STAGE!',END ZERO_WORD: DB '0000',0 PR_CONDICTION: LDA STAGE_STATUS+0 CP 3 JP Z,PR_HORIZON CP 2 JR Z,PR_DIAGON CP 1 JR Z,PR_CONTING PR_POINT: LD A,0 STA CURSOR+0 LD A,10 STA CURSOR+1 LD HL,POINT_WORD CALL WPRINT LD A,6 STA CURSOR+0 LD A,11 STA CURSOR+1 LD HL,ZERO_WORD CALL WPRINT mSETHV 4,11 LDA STAGE_STATUS+1 PR_POINT_SUBX: PUSH AF SWAPA CALL PRHEX POP AF JP PRHEX PR_CONTING: LD A,0 STA CURSOR+0 LD A,10 STA CURSOR+1 LD HL,CONTING_WORD CALL WPRINT mSETHV 5,11 LDA STAGE_STATUS+1 CALL HTOD JP PRBYT PR_DIAGON: LD A,0 STA CURSOR+0 LD A,10 STA CURSOR+1 LD HL,DIAGON_WORD CALL WPRINT mSETHV 4,11 LDA STAGE_STATUS+1 CALL HTOD JP PRBYT PR_HORIZON: LD A,0 STA CURSOR+0 LD A,10 STA CURSOR+1 LD HL,HORIZON_WORD CALL WPRINT mSETHV 4,11 LDA STAGE_STATUS+1 CALL HTOD JP PRBYT PRINT_STATUS: LD A,17 STA CURSOR+0 LD A,7 STA CURSOR+1 LDA STAGE_STATUS+0 CP 3 JR Z,PR_HORIZON_PIC CP 2 JR Z,PR_DIAGON_PIC CP 1 JR Z,PR_CONTING_PIC PR_POINT_PIC: LD HL,POINT_PIC JP WPRINT PR_CONTING_PIC: LD HL,MAKE_PIC JP WPRINT PR_DIAGON_PIC: LD HL,DIAGON_PIC JP WPRINT PR_HORIZON_PIC: LD HL,HORIZON_PIC JP WPRINT PRINT_STAGE_STATUS: LDA STAGE_STATUS+0 CP 0 JR NZ,PR_NUMBER PR_SCORE: mSETHV 17,10 LDA STAGE_STATUS+2 CALL PR_POINT_SUBX LD A,'0' CALL PRASC mSETHV 18,11 LD A,'K' JP PRASC PR_NUMBER: mSETHV 17,10 LDA STAGE_STATUS+2 CALL HTOD PR_NUMBER_SUB1: CP 10 JR NC,PR_NUMBER_SUB2 PUSH AF LD A,' ' CALL PRASC POP AF JP PRHEX PR_NUMBER_SUB2: JP PRBYT ; ; CACULATE FREE SPACE WHEN OVER STAGE. ; OVER_MAKE: LDA NEW_BLOCK_FLAG CP -1 RET Z LD HL,STAGE_OVER_DELAY DEC (HL) RET NZ CALL CLSPR LD A,3 STA MUSIC_NO CALL INIT_MUSIC LD A,3*60 CALL WAITSEC CALL CACULATE_FREE_SPACE LD A,4*60 CALL WAITSEC POP AF JP RE_START_POINT CLEAR_TOTAL_SCORE: LD HL,TOTAL_SCORE LD E,8 LD A,0 LOOP DEFL $ LMAI DEC E JR NZ,LOOP RET LEVEL_BLOCK_VAL: DB 5,8,13 SET_BLOCK_LEVEL: LD HL,LEVEL_BLOCK_VAL LDA GAME_LEVEL+0 LOOP DEFL $ DEC A CP -1 JR Z,SET_LEVEL_BLOCK INC HL JR LOOP SET_LEVEL_BLOCK: LD A,(HL) STA GAME_LEVEL+1 RET CACULATE_FREE_SPACE: LD HL,BLOCK_BOX LD B,2 ; X LD C,12 ; Y LD E,7 ; X LD D,5 ; Y FREE_SPACE_SUB1: LD A,B STA CURSOR+0 LD A,C STA CURSOR+1 CALL SETHV LOOP DEFL $ LAMI PUSH HL PUSH BC PUSH DE CP -1 JR Z,PASS_PRINT_1 CALL SEARCH_BLOCK_PIC LAMI CALL PRASC LAMI CALL PRASC JR PASS_PRINT_2 FREE_SCORE: DB 0,0,0,0,0,0,3,0 PASS_PRINT_1: LD A,0FAH ; CALL PRASC ; SAMPLE PICTURE. LD A,074H ; CALL PRASC ; LD BC,FREE_SCORE+7 LD HL,TOTAL_SCORE+7 CALL ADD_SCORE_TO_SCORE LDA SCRADDR+0 STA TEMP7 LDA SCRADDR+1 STA TEMP6 CALL PRINT_SCORE LDA TEMP6 STA SCRADDR+1 LDA TEMP7 STA SCRADDR+0 LD A,7 STA EFFECT1 LD A,15*1 CALL WAITSEC PASS_PRINT_2: POP DE POP BC POP HL DEC E JR NZ,LOOP INC C LD E,7 DEC D JR NZ,FREE_SPACE_SUB1 RET CACULATE_HARD: LDA TEMP_LEVEL CP 15 RET C LD A,0 STA TEMP_LEVEL LDA GAME_LEVEL+0 CP 2 RET Z INC A STA GAME_LEVEL+0 JP SET_BLOCK_LEVEL
Cleanup > Pages missing date references
Cleanup > Pages missing developer references
Cleanup > Pages missing publisher references
Cleanup > To do
Games > Games by content > Games with uncompiled source code
Games > Games by developer > Games developed by Sachen
Games > Games by platform
Games > Games by publisher > Games published by Sachen > Games published by Commin
Games > Games by release date > Games released in 1993
Games > Unlicensed games > Unlicensed Game Boy games
The Cutting Room Floor > Unimportant Awards > Game Boy games