├── Alca_Tech_MC68000_NEXTBasic_Compiler.exe
├── Exemplos
├── EX_Simple_Colision
│ ├── EX_Simple_Colision.bin
│ └── EX_Simple_Colision.nbs
├── Ex_Byref_Sprite
│ ├── By_ref_Sub.bin
│ └── By_ref_Sub.nbs
├── Ex_Cenario_Scroll
│ ├── mapa.bin
│ ├── scroll_dr_tiles.bin
│ ├── scroll_dr_tiles.nbs
│ └── tiles.bin
├── Ex_Circular_move
│ ├── Trigonometry.bin
│ └── Trigonometry.nbs
├── Ex_DAC_Ievan_Polkka
│ ├── DAC_Ievan_Polkka.bin
│ ├── DAC_Ievan_Polkka.nbs
│ ├── Ievan_Polkka.bin
│ ├── tile_data.bin
│ ├── tile_mapA.bin
│ └── tile_mapB.bin
├── Ex_Dangerous_Dave
│ ├── Assets
│ │ ├── Colision_map
│ │ │ └── colision_maps.bin
│ │ ├── Sprite_sheets
│ │ │ └── dave.bin
│ │ ├── Tile_maps
│ │ │ ├── level1.bin
│ │ │ ├── level10.bin
│ │ │ ├── level2.bin
│ │ │ ├── level3.bin
│ │ │ ├── level4.bin
│ │ │ ├── level5.bin
│ │ │ ├── level5_old.bin
│ │ │ ├── level6.bin
│ │ │ ├── level7.bin
│ │ │ ├── level8.bin
│ │ │ └── level9.bin
│ │ ├── Tile_sets
│ │ │ ├── numbers.bin
│ │ │ ├── tilepal0.bin
│ │ │ └── tilepal1.bin
│ │ └── Tiled_level_design_Files
│ │ │ ├── SpritesDAVE.png
│ │ │ ├── colision_maps
│ │ │ ├── blocks.png
│ │ │ ├── blocks.tsx
│ │ │ ├── c1.png
│ │ │ ├── c2.png
│ │ │ ├── colision_maps.png
│ │ │ └── colision_maps.tmx
│ │ │ ├── level1.png
│ │ │ ├── level1.tmx
│ │ │ ├── level10.png
│ │ │ ├── level10.tmx
│ │ │ ├── level2.png
│ │ │ ├── level2.tmx
│ │ │ ├── level3.png
│ │ │ ├── level3.tmx
│ │ │ ├── level4.png
│ │ │ ├── level4.tmx
│ │ │ ├── level5.png
│ │ │ ├── level5.tmx
│ │ │ ├── level6.png
│ │ │ ├── level6.tmx
│ │ │ ├── level7.png
│ │ │ ├── level7.tmx
│ │ │ ├── level8.png
│ │ │ ├── level8.tmx
│ │ │ ├── level9.png
│ │ │ ├── level9.tmx
│ │ │ ├── tileset2pal.png
│ │ │ ├── tilesetC1.bmp
│ │ │ ├── tilesetC2.bmp
│ │ │ └── tilesetpal2x.tsx
│ ├── Dangerous_Dave_BETA.bin
│ └── Dangerous_Dave_BETA.nbs
├── Ex_Fixed_Scrolling
│ ├── Fixed_Scrolling.bin
│ ├── Fixed_Scrolling.nbs
│ └── gfx_data
│ │ ├── forest_64x24_tiles.bin
│ │ ├── forest_tmap_A.bin
│ │ └── forest_tmap_B.bin
├── Ex_Mirror_Screen
│ ├── Ex_Mirror_Screen.bin
│ └── Ex_Mirror_Screen.nbs
├── Ex_Physics
│ ├── Ex_Physics.bin
│ └── Ex_Physics.nbs
├── Ex_Pseudo3D_Raster
│ ├── Ex_Pseudo3D_Raster.bin
│ ├── Ex_Pseudo3D_Raster.nbs
│ └── data
│ │ ├── road.png
│ │ ├── road_tilemap.bin
│ │ └── road_tiles.bin
├── Ex_Scroll_lines
│ ├── mapa.bin
│ ├── scroll_lines.bin
│ ├── scroll_lines.nbs
│ └── tiles.bin
├── Ex_Scroll_strips
│ ├── mapa.bin
│ ├── scroll_Strips.bin
│ ├── scroll_Strips.nbs
│ └── tiles.bin
├── Ex_Sprite_priority
│ ├── sprite_prt.bin
│ └── sprite_prt.nbs
├── Ex_Sprites
│ ├── sprites.bin
│ └── sprites.nbs
├── Ex_Twizzler_Data_Compression
│ ├── Assets
│ │ ├── TwizMod.exe
│ │ ├── Twizzler.exe
│ │ ├── tile_set.bin
│ │ └── tile_set.twim
│ ├── twizzler_data_compression.bin
│ └── twizzler_data_compression.nbs
├── Ex_Vertical_Zoom
│ ├── Vertical_zoom.bin
│ ├── Vertical_zoom.nbs
│ └── tiles.bin
├── Ex_XGM
│ ├── Ex_XGM_Sound_driver.bin
│ ├── Ex_XGM_Sound_driver.nbs
│ └── sor2.xgc
├── Ex_direct_color_DMA
│ ├── direct_color_dma.bin
│ ├── direct_color_dma.nbs
│ ├── image1.bin
│ ├── image2.bin
│ └── image3.bin
└── Ex_print
│ ├── Print_library_example.bin
│ └── Print_library_example.nbs
├── Gens.cfg
├── LICENSE
├── README.md
├── ScintillaNET.dll
├── bs_rom.bin
├── bs_rom.s
├── changelog_25_01_2021.txt
├── emu
├── GENS.hlp
├── GENS.txt
├── Gens.cfg
├── HISTORY.txt
├── LICENSE.txt
├── gens.exe
├── gens.srm
├── kailleraclient.dll
└── language.dat
├── language.dat
└── utils
├── CSV2Bin.exe
├── DDMA_Encoder.exe
├── GOLD Engine.dll
├── NEXTBASIC.exe
├── Next_Basic_3_0.egt
├── VDP_Config_Tool.exe
├── a68k.exe
├── func_lex.txt
├── hash.md5
├── ico_0.png
├── ico_1.png
├── nb.conf
├── nb_lex.txt
└── system
├── DMA_Queue.nbs
├── XGM_Driver.nbs
├── fixed_trigonometry.nbs
├── font_msxBR_8x8.bin
├── font_msx_br_8x8.png
├── genesis_header.asm
├── genesis_std.nbs
├── null.raw
├── print_lib.nbs
├── twizzler.nbs
├── twizzler_algorithm.asm
├── xgmlogo_pal_data.bin
├── xgmlogo_tile_data.bin
└── z80_xgm.bin
/Alca_Tech_MC68000_NEXTBasic_Compiler.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AlcaTechStudio/Alcatech_NextBasicMC68000_IDE/de08978207b1d04c3686281b0d8f02563aa515ff/Alca_Tech_MC68000_NEXTBasic_Compiler.exe
--------------------------------------------------------------------------------
/Exemplos/EX_Simple_Colision/EX_Simple_Colision.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AlcaTechStudio/Alcatech_NextBasicMC68000_IDE/de08978207b1d04c3686281b0d8f02563aa515ff/Exemplos/EX_Simple_Colision/EX_Simple_Colision.bin
--------------------------------------------------------------------------------
/Exemplos/EX_Simple_Colision/EX_Simple_Colision.nbs:
--------------------------------------------------------------------------------
1 | imports"\system\genesis_header.asm" ' Header de uma ROM de mega Drive Padrão (deve ficar sempre no topo)
2 |
3 | ' Constantes contendo o tamanho do sprite(em pixels) e do tile map(em tiles)'
4 | equal altura_sprite "7"
5 | equal largura_sprite "7"
6 | equal altura_mapa "8"
7 | equal largura_mapa "23"
8 |
9 |
10 | dim flag_vbl as integer
11 | dim colpoint_H as integer
12 | dim colpoint_V as integer
13 |
14 | std_init() 'Inicializa o VDP
15 | print_init() 'Carrega a fonte para a VRAM
16 |
17 | dim X_acel as signed integer = 0
18 | dim Y_acel as signed integer = 0
19 | dim Sprite_xpos as integer = 128 + (2*8)
20 | dim sprite_ypos as integer = 128 + (6*8)
21 |
22 | set_cursor_position(0,19)
23 | println("Pontos testados p/ colisao:")
24 | println(" ...x....")
25 | println(" ........")
26 | println(" ........")
27 | println(" x......x")
28 | println(" ........")
29 | println(" ........")
30 | println(" ........")
31 | println(" ...x....")
32 |
33 | 'Inicializa o Sprite
34 | set_sprite_size(0,0,0)
35 | set_sprite_gfx(0,2,0)
36 |
37 |
38 | 'Desenha a tela'
39 | for y = 0 to 8
40 | for x = 0 to 23
41 | draw_tile((peek(addressof(tile_map) + (x + (y*23)) as byte)), x,y, Plane_A)
42 | next x
43 | next y
44 | '[...] O que for colocado aqui sera executado apenas uma vez
45 | enable_global_int()
46 | Do 'main
47 |
48 | joy = joypad6b_read(0)
49 |
50 | 'Zera variaveis de aceleracao'
51 | X_acel = 0
52 | Y_acel = 0
53 |
54 | 'Testa os inputs do joystick'
55 | if bit_test(joy, btn_Right) then
56 | X_acel+=1
57 | elseif bit_test(joy, btn_Left) then
58 | X_acel-=1
59 | end if
60 | if bit_test(joy, btn_Up) then
61 | Y_acel -= 1
62 | elseif bit_test(joy, btn_Down) then
63 | Y_acel +=1
64 | end if
65 |
66 | ''''''''''''' Pega o ponto de colisão Horizontal'''''''''''''
67 | ytiles = (((Sprite_ypos+(altura_sprite/2)) -128)/8) * largura_mapa ' coordenada Y do ponto'
68 |
69 | if X_acel < 0 then 'Indo para tras'
70 | xtiles = (((Sprite_xpos+X_acel) -128)/8)
71 | else ' Indo para frente ou parado'
72 | xtiles = (((Sprite_xpos+X_acel+largura_sprite) -128)/8)
73 | end if
74 | colpoint_H = peek( addressof(tile_map) + xtiles + ytiles as byte)
75 |
76 | ''''''''''''''''''' Pega o ponto de colisão Vertical'''''''''
77 | xtiles = (((Sprite_xpos+(largura_sprite/2)) -128)/8) ' Coordenada X do ponto'
78 |
79 | if Y_acel < 0 then 'Indo para cima ->'
80 | ytiles = (((Sprite_ypos+Y_acel) -128)/8) * largura_mapa
81 | else ' Indo para cima ou parado'
82 | ytiles = (((Sprite_ypos+Y_acel+altura_sprite) -128)/8) * largura_mapa
83 | end if
84 | colpoint_V = peek( addressof(tile_map) + xtiles + ytiles as byte)
85 |
86 | '''''''''''''' Testa os pontos de Colisao ''''''''''''''''''
87 | if colpoint_H then X_acel = 0
88 | if colpoint_V then Y_acel = 0
89 |
90 | 'Atualiza a posicao do Sprite'
91 | Sprite_xpos += X_acel
92 | Sprite_ypos += Y_acel
93 | set_sprite_position(0,Sprite_xpos,Sprite_ypos)
94 |
95 | set_cursor_position(0,10)
96 | print("X_pixel: ") : print_var(Sprite_xpos) : print(" ")
97 | set_cursor_position(0,11)
98 | print("Y_pixel: ") : print_var(Sprite_ypos) : print(" ")
99 | set_cursor_position(0,12)
100 | print("X_Colpt: ") : print_var(colpoint_H) : print(" ")
101 | set_cursor_position(0,13)
102 | print("Y_Colpt: ") : print_var(colpoint_V) : print(" ")
103 |
104 | 'Limita o Frame Rate'
105 | flag_vbl = 1
106 | while(flag_vbl) : wend
107 |
108 | Loop ' Laço infinito
109 |
110 |
111 | sub isr_Vblank()
112 | update_sprite_table()
113 | flag_vbl = 0
114 | end sub
115 |
116 |
117 | imports "\system\genesis_std.nbs" ' Biblioteca contendo funções standard do Mega Drive
118 | imports "\system\print_lib.nbs"
119 |
120 | tile_map:
121 | DATA 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8
122 | DATA 8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8
123 | DATA 8,0,0,0,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8
124 | DATA 8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,8,0,0,0,8
125 | DATA 8,0,0,0,0,0,0,0,0,0,8,8,0,0,0,0,0,0,0,0,0,0,8
126 | DATA 8,0,0,0,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8
127 | DATA 8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8
128 | DATA 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8
--------------------------------------------------------------------------------
/Exemplos/Ex_Byref_Sprite/By_ref_Sub.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AlcaTechStudio/Alcatech_NextBasicMC68000_IDE/de08978207b1d04c3686281b0d8f02563aa515ff/Exemplos/Ex_Byref_Sprite/By_ref_Sub.bin
--------------------------------------------------------------------------------
/Exemplos/Ex_Byref_Sprite/By_ref_Sub.nbs:
--------------------------------------------------------------------------------
1 | imports"\system\genesis_header.asm" ' header de uma rom padrao de mega drive (deve ficar sempre no inicio)
2 |
3 | std_init()
4 |
5 | load_cram_DMA(addressof(setas_cores),16,0) 'Carrega 16 cores na paleta Zero
6 | load_tiles_DMA(addressof(setas_sprites),32,1) 'Carrega 32 TILES na posição 1 da VRAM (nunca usar a posição Zero!)
7 |
8 | 'Cria uma estrutura para armazenar os atributos do Sprite
9 | structure sprite_enum
10 | dim tag as integer
11 | dim x as integer
12 | dim y as integer
13 | dim gfx as integer
14 | dim pal as integer
15 | end structure
16 |
17 | 'Cria um novo elemento dessa estrutura
18 | dim sprite as new sprite_enum
19 |
20 | 'Inicializa os valores
21 | sprite.tag = 0 'Numero do Sprite na Sprite list (0 ~ 79)
22 | sprite.x=150 'Posição horizontal (128 = 0 na tela)
23 | sprite.y=150 'Posição vertical (128 = 0 na tela)
24 | sprite.gfx = 1 'Endereço dos graficos na Vram em Tiles
25 | sprite.pal = 0 'Paleta com a qual o sprite sera desenhado
26 |
27 | set_sprite_size(sprite.tag,3,3)
28 | set_sprite_gfx(sprite.tag,sprite.gfx,sprite.pal)
29 |
30 |
31 | ' Direcoes nos Eixos Vertical e Horizontal
32 | dim x as integer
33 | dim y as integer
34 |
35 | ' Flag que indica quando o Vblank ocorreu (marca o inicio do proximo Frame)
36 | dim vb_flag as integer
37 |
38 | ' Ativa as interrupções Globais (interrupcao por Vblank aciona do Padrão)
39 | Enable_global_int()
40 |
41 | do
42 | 'Zera as variaveis que armazenam as direcoes na qual o sprite deve seguir
43 | x=0
44 | y=0
45 |
46 | 'Pula para o Subrotina que define as direções e os graficos aplicados ao sprite, com base nos inputsdo joystick passando as variaveis globais como referencia
47 | joystick_thread(x,y,sprite.gfx)
48 |
49 | 'Aplica as direcoes a posicao do sprite
50 | sprite.x += x
51 | sprite.y += y
52 |
53 | 'Atualiza os dados na Sprite Table
54 | set_sprite_gfx(sprite.tag,sprite.gfx,sprite.pal)
55 | set_sprite_position(sprite.tag, sprite.x, sprite.y)
56 |
57 | 'Atualiza a Sprite Table na Vram
58 | update_sprite_table()
59 |
60 | 'Espera o proximo Vblank
61 | vb_flag = 1
62 | while(vb_flag) : wend
63 | loop
64 |
65 | 'Os parametros são recebidos por referencia, o que indica que alterar o valor deles ira alterar o valor da variaveis passadas na chamada da subrotina
66 | ' _x_ = x
67 | ' _y_ = y
68 | '_gfx_ = sprite.gfx
69 | sub joystick_thread(byref _x_ as integer, byref _y_ as integer, byref _gfx_ as integer)
70 |
71 | dim j as integer = joypad6b_read(0) 'Lê o valor do Joystick 1 e salva na Variavel LOCAL J (variaveis locais são DESTRUIDAS ao termino da funcao onde são declaradas)
72 |
73 | if bit_test(j, btn_up) then 'Botao Up pressionado?
74 | _y_= -2 'Y = -2
75 | _gfx_ = 17 'Sprite Seta pra cima (Endereço 17 na VRAM)
76 | elseif bit_test(j, btn_down) then 'Se não: Botao down pressionado?
77 | _y_=2 'Y = 2
78 | _gfx_ = 17 OR V_flip 'Sprite = Seta pra cima + Flip Vertical (seta pra baixo)
79 | end if 'fim Statement IF
80 |
81 | if bit_test(j, btn_left) then 'Botao left pressionado?
82 | _x_=-2 'X = -2
83 | _gfx_ = 1 or H_Flip 'Sprite = Seta para a direita + Flip Horizontal (seta para a esquerda)
84 | elseif bit_test(j, btn_right) then'Se nao: Botao Right pressionado?
85 | _x_=2 'X = 2
86 | _gfx_ = 1 'Sprite = Seta para a Direita (Endereço 1 na VRAM)
87 | end if 'fim Statement IF
88 | end sub
89 |
90 | ' Vblank
91 | sub isr_Vblank()
92 | vb_flag = 0
93 | end sub
94 |
95 | imports "\system\genesis_std.nbs"
96 |
97 | setas_cores:
98 | DATAINT &h0000,&h020E,&h04A2,&h0C42,&h0000,&h0000,&h0000,&h0000
99 | DATAINT &h0000,&h0000,&h0000,&h0000,&h0000,&h0000,&h0000,&h0000
100 | setas_sprites:
101 | DATALONG &h11111111 ' Tile #0
102 | DATALONG &h11111111
103 | DATALONG &h11111111
104 | DATALONG &h11111111
105 | DATALONG &h11111111
106 | DATALONG &h11111111
107 | DATALONG &h11111111
108 | DATALONG &h11111111
109 | DATALONG &h11122222 ' Tile #1
110 | DATALONG &h11122222
111 | DATALONG &h11122222
112 | DATALONG &h11122233
113 | DATALONG &h11122233
114 | DATALONG &h11122233
115 | DATALONG &h11122233
116 | DATALONG &h11122233
117 | DATALONG &h11122233 ' Tile #2
118 | DATALONG &h11122233
119 | DATALONG &h11122233
120 | DATALONG &h11122233
121 | DATALONG &h11122222
122 | DATALONG &h11122222
123 | DATALONG &h11122222
124 | DATALONG &h11111111
125 | DATALONG &h11111111 ' Tile #3
126 | DATALONG &h11111111
127 | DATALONG &h11111111
128 | DATALONG &h11111111
129 | DATALONG &h11111111
130 | DATALONG &h11111111
131 | DATALONG &h11111111
132 | DATALONG &h11111111
133 | DATALONG &h11111111 ' Tile #4
134 | DATALONG &h11111111
135 | DATALONG &h11111112
136 | DATALONG &h11111112
137 | DATALONG &h11111112
138 | DATALONG &h11111112
139 | DATALONG &h11111112
140 | DATALONG &h11111112
141 | DATALONG &h22222222 ' Tile #5
142 | DATALONG &h22222222
143 | DATALONG &h22222222
144 | DATALONG &h33333333
145 | DATALONG &h33333333
146 | DATALONG &h33333333
147 | DATALONG &h33333333
148 | DATALONG &h33333333
149 | DATALONG &h33333333 ' Tile #6
150 | DATALONG &h33333333
151 | DATALONG &h33333333
152 | DATALONG &h33333333
153 | DATALONG &h22222222
154 | DATALONG &h22222222
155 | DATALONG &h22222222
156 | DATALONG &h11111112
157 | DATALONG &h11111112 ' Tile #7
158 | DATALONG &h11111112
159 | DATALONG &h11111112
160 | DATALONG &h11111112
161 | DATALONG &h11111112
162 | DATALONG &h11111111
163 | DATALONG &h11111111
164 | DATALONG &h11111111
165 | DATALONG &h11111111 ' Tile #8
166 | DATALONG &h11111111
167 | DATALONG &h22111111
168 | DATALONG &h22211111
169 | DATALONG &h22221111
170 | DATALONG &h22222111
171 | DATALONG &h22222211
172 | DATALONG &h22222221
173 | DATALONG &h22322222 ' Tile #9
174 | DATALONG &h22332222
175 | DATALONG &h22333222
176 | DATALONG &h33333322
177 | DATALONG &h33333332
178 | DATALONG &h33333333
179 | DATALONG &h33333333
180 | DATALONG &h33333333
181 | DATALONG &h33333333 ' Tile #10
182 | DATALONG &h33333333
183 | DATALONG &h33333332
184 | DATALONG &h33333322
185 | DATALONG &h22333222
186 | DATALONG &h22332222
187 | DATALONG &h22322222
188 | DATALONG &h22222221
189 | DATALONG &h22222211 ' Tile #11
190 | DATALONG &h22222111
191 | DATALONG &h22221111
192 | DATALONG &h22211111
193 | DATALONG &h22111111
194 | DATALONG &h11111111
195 | DATALONG &h11111111
196 | DATALONG &h11111111
197 | DATALONG &h11111111 ' Tile #12
198 | DATALONG &h11111111
199 | DATALONG &h11111111
200 | DATALONG &h11111111
201 | DATALONG &h11111111
202 | DATALONG &h11111111
203 | DATALONG &h11111111
204 | DATALONG &h11111111
205 | DATALONG &h11111111 ' Tile #13
206 | DATALONG &h21111111
207 | DATALONG &h22111111
208 | DATALONG &h22211111
209 | DATALONG &h22221111
210 | DATALONG &h22222111
211 | DATALONG &h32222211
212 | DATALONG &h33222211
213 | DATALONG &h32222211 ' Tile #14
214 | DATALONG &h22222111
215 | DATALONG &h22221111
216 | DATALONG &h22211111
217 | DATALONG &h22111111
218 | DATALONG &h21111111
219 | DATALONG &h11111111
220 | DATALONG &h11111111
221 | DATALONG &h11111111 ' Tile #15
222 | DATALONG &h11111111
223 | DATALONG &h11111111
224 | DATALONG &h11111111
225 | DATALONG &h11111111
226 | DATALONG &h11111111
227 | DATALONG &h11111111
228 | DATALONG &h11111111
229 | DATALONG &h11111111 ' Tile #16
230 | DATALONG &h11111111
231 | DATALONG &h11111111
232 | DATALONG &h11111111
233 | DATALONG &h11111111
234 | DATALONG &h11111111
235 | DATALONG &h11111111
236 | DATALONG &h11111111
237 | DATALONG &h11111111 ' Tile #17
238 | DATALONG &h11111111
239 | DATALONG &h11111112
240 | DATALONG &h11111122
241 | DATALONG &h11111222
242 | DATALONG &h11112222
243 | DATALONG &h11122222
244 | DATALONG &h11122222
245 | DATALONG &h11122222 ' Tile #18
246 | DATALONG &h11111111
247 | DATALONG &h11111111
248 | DATALONG &h11111111
249 | DATALONG &h11111111
250 | DATALONG &h11111111
251 | DATALONG &h11111111
252 | DATALONG &h11111111
253 | DATALONG &h11111111 ' Tile #19
254 | DATALONG &h11111111
255 | DATALONG &h11111111
256 | DATALONG &h11111111
257 | DATALONG &h11111111
258 | DATALONG &h11111111
259 | DATALONG &h11111111
260 | DATALONG &h11111111
261 | DATALONG &h11111111 ' Tile #20
262 | DATALONG &h11111111
263 | DATALONG &h11111112
264 | DATALONG &h11111122
265 | DATALONG &h11111222
266 | DATALONG &h11112222
267 | DATALONG &h11122222
268 | DATALONG &h11222223
269 | DATALONG &h12222233 ' Tile #21
270 | DATALONG &h22222333
271 | DATALONG &h22223333
272 | DATALONG &h22233333
273 | DATALONG &h22333333
274 | DATALONG &h23333333
275 | DATALONG &h22223333
276 | DATALONG &h22223333
277 | DATALONG &h22223333 ' Tile #22
278 | DATALONG &h12223333
279 | DATALONG &h12223333
280 | DATALONG &h12223333
281 | DATALONG &h12223333
282 | DATALONG &h12223333
283 | DATALONG &h12223333
284 | DATALONG &h12223333
285 | DATALONG &h12223333 ' Tile #23
286 | DATALONG &h12223333
287 | DATALONG &h12222222
288 | DATALONG &h12222222
289 | DATALONG &h12222222
290 | DATALONG &h11111111
291 | DATALONG &h11111111
292 | DATALONG &h11111111
293 | DATALONG &h11111111 ' Tile #24
294 | DATALONG &h11111111
295 | DATALONG &h22111111
296 | DATALONG &h22211111
297 | DATALONG &h22221111
298 | DATALONG &h22222111
299 | DATALONG &h32222211
300 | DATALONG &h33222221
301 | DATALONG &h33322222 ' Tile #25
302 | DATALONG &h33332222
303 | DATALONG &h33333222
304 | DATALONG &h33333322
305 | DATALONG &h33333332
306 | DATALONG &h33333333
307 | DATALONG &h33333222
308 | DATALONG &h33333222
309 | DATALONG &h33333222 ' Tile #26
310 | DATALONG &h33333222
311 | DATALONG &h33333222
312 | DATALONG &h33333222
313 | DATALONG &h33333222
314 | DATALONG &h33333222
315 | DATALONG &h33333222
316 | DATALONG &h33333222
317 | DATALONG &h33333222 ' Tile #27
318 | DATALONG &h33333222
319 | DATALONG &h22222222
320 | DATALONG &h22222222
321 | DATALONG &h22222222
322 | DATALONG &h11111111
323 | DATALONG &h11111111
324 | DATALONG &h11111111
325 | DATALONG &h11111111 ' Tile #28
326 | DATALONG &h11111111
327 | DATALONG &h11111111
328 | DATALONG &h11111111
329 | DATALONG &h11111111
330 | DATALONG &h11111111
331 | DATALONG &h11111111
332 | DATALONG &h11111111
333 | DATALONG &h11111111 ' Tile #29
334 | DATALONG &h21111111
335 | DATALONG &h22111111
336 | DATALONG &h22211111
337 | DATALONG &h22221111
338 | DATALONG &h22222111
339 | DATALONG &h22222211
340 | DATALONG &h22222211
341 | DATALONG &h22222211 ' Tile #30
342 | DATALONG &h11111111
343 | DATALONG &h11111111
344 | DATALONG &h11111111
345 | DATALONG &h11111111
346 | DATALONG &h11111111
347 | DATALONG &h11111111
348 | DATALONG &h11111111
349 | DATALONG &h11111111 ' Tile #31
350 | DATALONG &h11111111
351 | DATALONG &h11111111
352 | DATALONG &h11111111
353 | DATALONG &h11111111
354 | DATALONG &h11111111
355 | DATALONG &h11111111
356 | DATALONG &h11111111
357 |
--------------------------------------------------------------------------------
/Exemplos/Ex_Cenario_Scroll/mapa.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AlcaTechStudio/Alcatech_NextBasicMC68000_IDE/de08978207b1d04c3686281b0d8f02563aa515ff/Exemplos/Ex_Cenario_Scroll/mapa.bin
--------------------------------------------------------------------------------
/Exemplos/Ex_Cenario_Scroll/scroll_dr_tiles.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AlcaTechStudio/Alcatech_NextBasicMC68000_IDE/de08978207b1d04c3686281b0d8f02563aa515ff/Exemplos/Ex_Cenario_Scroll/scroll_dr_tiles.bin
--------------------------------------------------------------------------------
/Exemplos/Ex_Cenario_Scroll/scroll_dr_tiles.nbs:
--------------------------------------------------------------------------------
1 | imports"\system\genesis_header.asm" ' Header de uma ROM de mega Drive Padrão
2 |
3 |
4 | std_init()
5 | load_tiles_DMA(addressof(tiles),168,1)
6 | load_cram_DMA(addressof(paleta),16,0)
7 |
8 |
9 | for y = 0 to 32
10 | for x=0 to 64
11 | draw_tile( peek(addressof(mapa) + (x<<1) + (y<<7) as word)+1, x , y , Plane_A)
12 | next
13 | next
14 |
15 |
16 | x=0
17 | y=0
18 |
19 | Do 'main
20 | j = joypad6b_read(0)
21 |
22 | if bit_test(j, btn_left) then
23 | x -= 1
24 | elseif bit_test(j, btn_right) then
25 | x +=1
26 | end if
27 | 'Sempre que temos uma comparação < ou <= à Zero a variavel é tratada automaticamente como Signed
28 | 'Para usar uma variavel como signed em demais ocasiões escreva a expressão dentro da função _signed( )
29 | if x < 0 then x = 0 ' Seria equivalente a x > 32767 numa variavel unsigned
30 | if x > 192 then x = 192
31 |
32 | if bit_test(j, btn_up) then
33 | y-=1
34 | elseif bit_test(j, btn_down) then
35 | y+=1
36 | end if
37 |
38 | if y < 0 then y = 0
39 | if y > 32 then y = 32
40 |
41 | Set_HorizontalScroll_position(x AND 511,Plane_A)
42 | Set_VerticalScroll_position(y AND 255,Plane_A)
43 | wait_Vblank()
44 | Loop ' Laço infinito
45 |
46 |
47 |
48 | imports"\system\genesis_std.nbs" ' Biblioteca contendo funções standard do Mega Drives
49 |
50 | 'Mapa 64x32
51 | mapa:
52 | imports"\mapa.bin"
53 |
54 | '168 Tiles
55 | tiles:
56 | imports"\tiles.bin"
57 |
58 | paleta:
59 | DATAINT &h0000,&h0000,&h00A0,&h0E22,&h0400,&h002C,&h0006,&h0EA2
60 | DATAINT &h02CE,&h0046,&h0040,&h0C0C,&h0606,&h0666,&h0660,&h0CEE
61 |
--------------------------------------------------------------------------------
/Exemplos/Ex_Cenario_Scroll/tiles.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AlcaTechStudio/Alcatech_NextBasicMC68000_IDE/de08978207b1d04c3686281b0d8f02563aa515ff/Exemplos/Ex_Cenario_Scroll/tiles.bin
--------------------------------------------------------------------------------
/Exemplos/Ex_Circular_move/Trigonometry.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AlcaTechStudio/Alcatech_NextBasicMC68000_IDE/de08978207b1d04c3686281b0d8f02563aa515ff/Exemplos/Ex_Circular_move/Trigonometry.bin
--------------------------------------------------------------------------------
/Exemplos/Ex_Circular_move/Trigonometry.nbs:
--------------------------------------------------------------------------------
1 | imports "\system\genesis_header.asm" ' Header de uma ROM de mega Drive Padrão (deve ficar sempre no topo)
2 |
3 |
4 | std_init() 'Inicializa o VDP
5 | print_init() 'Carrega a fonte para a VRAM
6 |
7 |
8 | dim dx as signed fixed
9 | dim dy as signed fixed
10 | dim radius as signed fixed = 20
11 |
12 | dim x as signed integer = 288
13 | dim y as signed integer = 240
14 |
15 | set_sprite_size(0,0,0)
16 | set_sprite_gfx(0,2,0)
17 |
18 | set_sprite_size(1,0,0)
19 | set_sprite_gfx(1,1,0)
20 |
21 | set_sprite_position(1,x,y)
22 |
23 | waitvbl = 0
24 | enable_global_int() 'Ativa interrupcoes globais
25 |
26 |
27 | angle = 0
28 |
29 | do
30 | j = joypad6b_read(0)
31 |
32 | if bit_test(j, btn_Right) then
33 | radius+=1
34 | elseif bit_test(j, btn_Left) then
35 | radius-=1
36 | end if
37 |
38 | if bit_test(j, btn_Up) then
39 | angle += 1
40 | elseif bit_test(j, btn_Down) then
41 | angle -=1
42 | end if
43 |
44 | angle &= 511
45 |
46 | dx = (cos(angle) * radius)
47 | dy = (sen(angle) * radius)
48 |
49 | set_cursor_position(0,0)
50 | print("Seno : ") : print_signed_fixed(dy) : print(" ")
51 | set_cursor_position(0,1)
52 | print("Coseno: ") : print_signed_fixed(dx) : print(" ")
53 | set_cursor_position(0,2)
54 | print("Raio : ") : print_signed_fixed(radius) : print(" ")
55 | set_cursor_position(0,3)
56 | print("Angulo: ") : print_var(angle) : print(" ")
57 |
58 |
59 | set_sprite_position(0, x+dx, y-dy)
60 |
61 |
62 | waitvbl = 1
63 | while(waitvbl)_asm("nop")
64 |
65 | loop
66 |
67 | sub isr_Vblank()
68 | update_sprite_table() 'Update sprite attribute table
69 | waitvbl=0
70 | end sub
71 |
72 |
73 | Imports "\system\genesis_std.nbs" ' Biblioteca contendo funções standard do Mega Drive
74 | Imports "\system\print_lib.nbs" ' Inclui a funcao Print
75 | Imports "\system\fixed_trigonometry.nbs" ' Trigonometria para matematica de ponto Fixo
--------------------------------------------------------------------------------
/Exemplos/Ex_DAC_Ievan_Polkka/DAC_Ievan_Polkka.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AlcaTechStudio/Alcatech_NextBasicMC68000_IDE/de08978207b1d04c3686281b0d8f02563aa515ff/Exemplos/Ex_DAC_Ievan_Polkka/DAC_Ievan_Polkka.bin
--------------------------------------------------------------------------------
/Exemplos/Ex_DAC_Ievan_Polkka/DAC_Ievan_Polkka.nbs:
--------------------------------------------------------------------------------
1 | imports"\system\genesis_header.asm" ' Header de uma ROM de mega Drive Padrão (deve ficar sempre no topo)
2 |
3 | ' Inicializa o VDP
4 | std_init()
5 |
6 | ' Carrega os tiles e a paleta de cores para a VRAM e CRAM
7 | load_tiles_dma(addressof(tiles),1338,1)
8 | load_cram_dma(addressof(paleta),32,0)
9 |
10 | ' Desenha a imagem na Tela
11 | for y = 0 to 28
12 | for x = 0 to 40
13 | draw_tile( peek(addressof(map_A) + ((x + (y*40))*2) as word) + 1, x,y, Plane_A)
14 | next
15 | next
16 | for y = 0 to 28
17 | for x = 0 to 40
18 | draw_tile( (peek(addressof(map_B) + ((x + (y*40))*2) as word) or palette_1 )+ 1, x,y, Plane_B)
19 | next
20 | next
21 |
22 | ' Inicializa o DAC
23 | poke(&H2B as byte, &hA04000)
24 | while(bit_test(peek(&hA04000 as byte),7)) _asm("nop")
25 | poke(&H80 as byte, &hA04001)
26 | poke(&HB6 as byte, &hA04002)
27 | while(bit_test(peek(&hA04000 as byte),7)) _asm("nop")
28 | poke(&HC0 as byte, &hA04003)
29 | poke(&H2A as byte, &hA04000)
30 |
31 | Do 'main
32 |
33 | ' Faz o Streaming do arquivo WAV de audio
34 | dim k as long = 0
35 | for k=1 to (addressof(wave_end) - addressof(wave))
36 | while(bit_test(peek(&hA04000 as byte),7)) _asm("nop") ' Espera o DAC responder
37 | poke(peek(addressof(wave)+k as byte) as byte,&hA04001) ' Lê o proximo Byte e envia para o DAC
38 | while( not( peek(&hC00004 as word) and 4)) _asm("nop") ' Espera o proximo Hblank ( ~13,4Khz)
39 | next
40 |
41 | Loop ' Laço infinito
42 |
43 |
44 |
45 | imports"\system\genesis_std.nbs" ' Biblioteca contendo funções standard do Mega Drive
46 |
47 | ' Arquivo Wav
48 | wave:
49 | imports "\Ievan_Polkka.bin"
50 | wave_end:
51 |
52 |
53 | ' Tiles, Tile Maps e paleta de cores
54 | tiles:
55 | imports "\tile_data.bin" '1338 tiles
56 | map_A:
57 | imports "\tile_mapA.bin"
58 | map_B:
59 | imports "\tile_mapB.bin"
60 | paleta:
61 | DATAINT &h0000,&h0000,&h0222,&h0002,&h0224,&h0026,&h0422,&h0226 ' Pallette #0
62 | DATAINT &h0248,&h0444,&h024C,&h0446,&h0668,&h068A,&h0888,&h066C
63 | DATAINT &h0000,&h046A,&h0468,&h048E,&h08AC,&h0644,&h0AA8,&h0864 ' Pallette #1
64 | DATAINT &h0866,&h0AAC,&h0EEE,&h04AE,&h06AE,&h08CE,&h04CE,&h0A64
65 |
66 |
67 |
68 |
69 |
--------------------------------------------------------------------------------
/Exemplos/Ex_DAC_Ievan_Polkka/Ievan_Polkka.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AlcaTechStudio/Alcatech_NextBasicMC68000_IDE/de08978207b1d04c3686281b0d8f02563aa515ff/Exemplos/Ex_DAC_Ievan_Polkka/Ievan_Polkka.bin
--------------------------------------------------------------------------------
/Exemplos/Ex_DAC_Ievan_Polkka/tile_data.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AlcaTechStudio/Alcatech_NextBasicMC68000_IDE/de08978207b1d04c3686281b0d8f02563aa515ff/Exemplos/Ex_DAC_Ievan_Polkka/tile_data.bin
--------------------------------------------------------------------------------
/Exemplos/Ex_DAC_Ievan_Polkka/tile_mapA.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AlcaTechStudio/Alcatech_NextBasicMC68000_IDE/de08978207b1d04c3686281b0d8f02563aa515ff/Exemplos/Ex_DAC_Ievan_Polkka/tile_mapA.bin
--------------------------------------------------------------------------------
/Exemplos/Ex_DAC_Ievan_Polkka/tile_mapB.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AlcaTechStudio/Alcatech_NextBasicMC68000_IDE/de08978207b1d04c3686281b0d8f02563aa515ff/Exemplos/Ex_DAC_Ievan_Polkka/tile_mapB.bin
--------------------------------------------------------------------------------
/Exemplos/Ex_Dangerous_Dave/Assets/Colision_map/colision_maps.bin:
--------------------------------------------------------------------------------
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 |
--------------------------------------------------------------------------------
/Exemplos/Ex_Dangerous_Dave/Assets/Sprite_sheets/dave.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AlcaTechStudio/Alcatech_NextBasicMC68000_IDE/de08978207b1d04c3686281b0d8f02563aa515ff/Exemplos/Ex_Dangerous_Dave/Assets/Sprite_sheets/dave.bin
--------------------------------------------------------------------------------
/Exemplos/Ex_Dangerous_Dave/Assets/Tile_maps/level1.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AlcaTechStudio/Alcatech_NextBasicMC68000_IDE/de08978207b1d04c3686281b0d8f02563aa515ff/Exemplos/Ex_Dangerous_Dave/Assets/Tile_maps/level1.bin
--------------------------------------------------------------------------------
/Exemplos/Ex_Dangerous_Dave/Assets/Tile_maps/level10.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AlcaTechStudio/Alcatech_NextBasicMC68000_IDE/de08978207b1d04c3686281b0d8f02563aa515ff/Exemplos/Ex_Dangerous_Dave/Assets/Tile_maps/level10.bin
--------------------------------------------------------------------------------
/Exemplos/Ex_Dangerous_Dave/Assets/Tile_maps/level2.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AlcaTechStudio/Alcatech_NextBasicMC68000_IDE/de08978207b1d04c3686281b0d8f02563aa515ff/Exemplos/Ex_Dangerous_Dave/Assets/Tile_maps/level2.bin
--------------------------------------------------------------------------------
/Exemplos/Ex_Dangerous_Dave/Assets/Tile_maps/level3.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AlcaTechStudio/Alcatech_NextBasicMC68000_IDE/de08978207b1d04c3686281b0d8f02563aa515ff/Exemplos/Ex_Dangerous_Dave/Assets/Tile_maps/level3.bin
--------------------------------------------------------------------------------
/Exemplos/Ex_Dangerous_Dave/Assets/Tile_maps/level4.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AlcaTechStudio/Alcatech_NextBasicMC68000_IDE/de08978207b1d04c3686281b0d8f02563aa515ff/Exemplos/Ex_Dangerous_Dave/Assets/Tile_maps/level4.bin
--------------------------------------------------------------------------------
/Exemplos/Ex_Dangerous_Dave/Assets/Tile_maps/level5.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AlcaTechStudio/Alcatech_NextBasicMC68000_IDE/de08978207b1d04c3686281b0d8f02563aa515ff/Exemplos/Ex_Dangerous_Dave/Assets/Tile_maps/level5.bin
--------------------------------------------------------------------------------
/Exemplos/Ex_Dangerous_Dave/Assets/Tile_maps/level5_old.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AlcaTechStudio/Alcatech_NextBasicMC68000_IDE/de08978207b1d04c3686281b0d8f02563aa515ff/Exemplos/Ex_Dangerous_Dave/Assets/Tile_maps/level5_old.bin
--------------------------------------------------------------------------------
/Exemplos/Ex_Dangerous_Dave/Assets/Tile_maps/level6.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AlcaTechStudio/Alcatech_NextBasicMC68000_IDE/de08978207b1d04c3686281b0d8f02563aa515ff/Exemplos/Ex_Dangerous_Dave/Assets/Tile_maps/level6.bin
--------------------------------------------------------------------------------
/Exemplos/Ex_Dangerous_Dave/Assets/Tile_maps/level7.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AlcaTechStudio/Alcatech_NextBasicMC68000_IDE/de08978207b1d04c3686281b0d8f02563aa515ff/Exemplos/Ex_Dangerous_Dave/Assets/Tile_maps/level7.bin
--------------------------------------------------------------------------------
/Exemplos/Ex_Dangerous_Dave/Assets/Tile_maps/level8.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AlcaTechStudio/Alcatech_NextBasicMC68000_IDE/de08978207b1d04c3686281b0d8f02563aa515ff/Exemplos/Ex_Dangerous_Dave/Assets/Tile_maps/level8.bin
--------------------------------------------------------------------------------
/Exemplos/Ex_Dangerous_Dave/Assets/Tile_maps/level9.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AlcaTechStudio/Alcatech_NextBasicMC68000_IDE/de08978207b1d04c3686281b0d8f02563aa515ff/Exemplos/Ex_Dangerous_Dave/Assets/Tile_maps/level9.bin
--------------------------------------------------------------------------------
/Exemplos/Ex_Dangerous_Dave/Assets/Tile_sets/numbers.bin:
--------------------------------------------------------------------------------
1 | Q#AVRUTVSVTVTVTVTVTVTVTVTUSVQD1VfR%ffU5ffeEffeEffeEffeEffeEffefQ#AVRVUfVfaAfffaAffTUUQDCQ#AVUUTVfUTVfAVfUTVffTVUUSVQ41VRVRVSVSVTUTVSDDVUUTVffTVffSVffQVR#DVRUUVSUUfQD1VUUTVUUTVUUSVQ41VR#DVRUUVSUUfTD1VTUSVSUTVSUTVQ41VR$CVRUTVUVTVfeAffaEffTfeVfeCVfQ#AVRUTVSUTVQDAVTUTVTVTVSUTVQ41VR41VRUSVSUSVTUTVQ4DVeUTVUUSVQD1V
--------------------------------------------------------------------------------
/Exemplos/Ex_Dangerous_Dave/Assets/Tile_sets/tilepal0.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AlcaTechStudio/Alcatech_NextBasicMC68000_IDE/de08978207b1d04c3686281b0d8f02563aa515ff/Exemplos/Ex_Dangerous_Dave/Assets/Tile_sets/tilepal0.bin
--------------------------------------------------------------------------------
/Exemplos/Ex_Dangerous_Dave/Assets/Tile_sets/tilepal1.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AlcaTechStudio/Alcatech_NextBasicMC68000_IDE/de08978207b1d04c3686281b0d8f02563aa515ff/Exemplos/Ex_Dangerous_Dave/Assets/Tile_sets/tilepal1.bin
--------------------------------------------------------------------------------
/Exemplos/Ex_Dangerous_Dave/Assets/Tiled_level_design_Files/SpritesDAVE.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AlcaTechStudio/Alcatech_NextBasicMC68000_IDE/de08978207b1d04c3686281b0d8f02563aa515ff/Exemplos/Ex_Dangerous_Dave/Assets/Tiled_level_design_Files/SpritesDAVE.png
--------------------------------------------------------------------------------
/Exemplos/Ex_Dangerous_Dave/Assets/Tiled_level_design_Files/colision_maps/blocks.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AlcaTechStudio/Alcatech_NextBasicMC68000_IDE/de08978207b1d04c3686281b0d8f02563aa515ff/Exemplos/Ex_Dangerous_Dave/Assets/Tiled_level_design_Files/colision_maps/blocks.png
--------------------------------------------------------------------------------
/Exemplos/Ex_Dangerous_Dave/Assets/Tiled_level_design_Files/colision_maps/blocks.tsx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/Exemplos/Ex_Dangerous_Dave/Assets/Tiled_level_design_Files/colision_maps/c1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AlcaTechStudio/Alcatech_NextBasicMC68000_IDE/de08978207b1d04c3686281b0d8f02563aa515ff/Exemplos/Ex_Dangerous_Dave/Assets/Tiled_level_design_Files/colision_maps/c1.png
--------------------------------------------------------------------------------
/Exemplos/Ex_Dangerous_Dave/Assets/Tiled_level_design_Files/colision_maps/c2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AlcaTechStudio/Alcatech_NextBasicMC68000_IDE/de08978207b1d04c3686281b0d8f02563aa515ff/Exemplos/Ex_Dangerous_Dave/Assets/Tiled_level_design_Files/colision_maps/c2.png
--------------------------------------------------------------------------------
/Exemplos/Ex_Dangerous_Dave/Assets/Tiled_level_design_Files/colision_maps/colision_maps.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AlcaTechStudio/Alcatech_NextBasicMC68000_IDE/de08978207b1d04c3686281b0d8f02563aa515ff/Exemplos/Ex_Dangerous_Dave/Assets/Tiled_level_design_Files/colision_maps/colision_maps.png
--------------------------------------------------------------------------------
/Exemplos/Ex_Dangerous_Dave/Assets/Tiled_level_design_Files/level1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AlcaTechStudio/Alcatech_NextBasicMC68000_IDE/de08978207b1d04c3686281b0d8f02563aa515ff/Exemplos/Ex_Dangerous_Dave/Assets/Tiled_level_design_Files/level1.png
--------------------------------------------------------------------------------
/Exemplos/Ex_Dangerous_Dave/Assets/Tiled_level_design_Files/level1.tmx:
--------------------------------------------------------------------------------
1 |
2 |
31 |
--------------------------------------------------------------------------------
/Exemplos/Ex_Dangerous_Dave/Assets/Tiled_level_design_Files/level10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AlcaTechStudio/Alcatech_NextBasicMC68000_IDE/de08978207b1d04c3686281b0d8f02563aa515ff/Exemplos/Ex_Dangerous_Dave/Assets/Tiled_level_design_Files/level10.png
--------------------------------------------------------------------------------
/Exemplos/Ex_Dangerous_Dave/Assets/Tiled_level_design_Files/level2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AlcaTechStudio/Alcatech_NextBasicMC68000_IDE/de08978207b1d04c3686281b0d8f02563aa515ff/Exemplos/Ex_Dangerous_Dave/Assets/Tiled_level_design_Files/level2.png
--------------------------------------------------------------------------------
/Exemplos/Ex_Dangerous_Dave/Assets/Tiled_level_design_Files/level2.tmx:
--------------------------------------------------------------------------------
1 |
2 |
31 |
--------------------------------------------------------------------------------
/Exemplos/Ex_Dangerous_Dave/Assets/Tiled_level_design_Files/level3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AlcaTechStudio/Alcatech_NextBasicMC68000_IDE/de08978207b1d04c3686281b0d8f02563aa515ff/Exemplos/Ex_Dangerous_Dave/Assets/Tiled_level_design_Files/level3.png
--------------------------------------------------------------------------------
/Exemplos/Ex_Dangerous_Dave/Assets/Tiled_level_design_Files/level3.tmx:
--------------------------------------------------------------------------------
1 |
2 |
31 |
--------------------------------------------------------------------------------
/Exemplos/Ex_Dangerous_Dave/Assets/Tiled_level_design_Files/level4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AlcaTechStudio/Alcatech_NextBasicMC68000_IDE/de08978207b1d04c3686281b0d8f02563aa515ff/Exemplos/Ex_Dangerous_Dave/Assets/Tiled_level_design_Files/level4.png
--------------------------------------------------------------------------------
/Exemplos/Ex_Dangerous_Dave/Assets/Tiled_level_design_Files/level5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AlcaTechStudio/Alcatech_NextBasicMC68000_IDE/de08978207b1d04c3686281b0d8f02563aa515ff/Exemplos/Ex_Dangerous_Dave/Assets/Tiled_level_design_Files/level5.png
--------------------------------------------------------------------------------
/Exemplos/Ex_Dangerous_Dave/Assets/Tiled_level_design_Files/level5.tmx:
--------------------------------------------------------------------------------
1 |
2 |
31 |
--------------------------------------------------------------------------------
/Exemplos/Ex_Dangerous_Dave/Assets/Tiled_level_design_Files/level6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AlcaTechStudio/Alcatech_NextBasicMC68000_IDE/de08978207b1d04c3686281b0d8f02563aa515ff/Exemplos/Ex_Dangerous_Dave/Assets/Tiled_level_design_Files/level6.png
--------------------------------------------------------------------------------
/Exemplos/Ex_Dangerous_Dave/Assets/Tiled_level_design_Files/level7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AlcaTechStudio/Alcatech_NextBasicMC68000_IDE/de08978207b1d04c3686281b0d8f02563aa515ff/Exemplos/Ex_Dangerous_Dave/Assets/Tiled_level_design_Files/level7.png
--------------------------------------------------------------------------------
/Exemplos/Ex_Dangerous_Dave/Assets/Tiled_level_design_Files/level8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AlcaTechStudio/Alcatech_NextBasicMC68000_IDE/de08978207b1d04c3686281b0d8f02563aa515ff/Exemplos/Ex_Dangerous_Dave/Assets/Tiled_level_design_Files/level8.png
--------------------------------------------------------------------------------
/Exemplos/Ex_Dangerous_Dave/Assets/Tiled_level_design_Files/level8.tmx:
--------------------------------------------------------------------------------
1 |
2 |
31 |
--------------------------------------------------------------------------------
/Exemplos/Ex_Dangerous_Dave/Assets/Tiled_level_design_Files/level9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AlcaTechStudio/Alcatech_NextBasicMC68000_IDE/de08978207b1d04c3686281b0d8f02563aa515ff/Exemplos/Ex_Dangerous_Dave/Assets/Tiled_level_design_Files/level9.png
--------------------------------------------------------------------------------
/Exemplos/Ex_Dangerous_Dave/Assets/Tiled_level_design_Files/tileset2pal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AlcaTechStudio/Alcatech_NextBasicMC68000_IDE/de08978207b1d04c3686281b0d8f02563aa515ff/Exemplos/Ex_Dangerous_Dave/Assets/Tiled_level_design_Files/tileset2pal.png
--------------------------------------------------------------------------------
/Exemplos/Ex_Dangerous_Dave/Assets/Tiled_level_design_Files/tilesetC1.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AlcaTechStudio/Alcatech_NextBasicMC68000_IDE/de08978207b1d04c3686281b0d8f02563aa515ff/Exemplos/Ex_Dangerous_Dave/Assets/Tiled_level_design_Files/tilesetC1.bmp
--------------------------------------------------------------------------------
/Exemplos/Ex_Dangerous_Dave/Assets/Tiled_level_design_Files/tilesetC2.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AlcaTechStudio/Alcatech_NextBasicMC68000_IDE/de08978207b1d04c3686281b0d8f02563aa515ff/Exemplos/Ex_Dangerous_Dave/Assets/Tiled_level_design_Files/tilesetC2.bmp
--------------------------------------------------------------------------------
/Exemplos/Ex_Dangerous_Dave/Assets/Tiled_level_design_Files/tilesetpal2x.tsx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/Exemplos/Ex_Dangerous_Dave/Dangerous_Dave_BETA.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AlcaTechStudio/Alcatech_NextBasicMC68000_IDE/de08978207b1d04c3686281b0d8f02563aa515ff/Exemplos/Ex_Dangerous_Dave/Dangerous_Dave_BETA.bin
--------------------------------------------------------------------------------
/Exemplos/Ex_Fixed_Scrolling/Fixed_Scrolling.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AlcaTechStudio/Alcatech_NextBasicMC68000_IDE/de08978207b1d04c3686281b0d8f02563aa515ff/Exemplos/Ex_Fixed_Scrolling/Fixed_Scrolling.bin
--------------------------------------------------------------------------------
/Exemplos/Ex_Fixed_Scrolling/Fixed_Scrolling.nbs:
--------------------------------------------------------------------------------
1 | imports"\system\genesis_header.asm" ' Header de uma ROM de mega Drive Padrão (deve ficar sempre no topo)
2 |
3 |
4 | std_init()
5 | print_init()
6 | set_text_plane(Plane_B)
7 | ' Carrega os tiles e a paleta de cores para a VRAM e CRAM
8 | load_tiles_dma(addressof(tile_data),912,256) ' 0~255 Tabela ASCII
9 | load_cram_dma(addressof(forest_32_pal),32,1) ' Paleta 0 usada para o comando Print
10 |
11 | ' Desenha a imagem na Tela
12 | for y = 0 to 24
13 | for x = 0 to 64
14 | draw_tile( (peek(addressof(tile_map_A) + ((x + (y*64))*2) as word) or palette_1) + 256, x,y, Plane_A)
15 | next
16 | next
17 | for y = 0 to 24
18 | for x = 0 to 64
19 | draw_tile( (peek(addressof(tile_map_B) + ((x + (y*64))*2) as word) or palette_2 )+ 256, x,y, Plane_B)
20 | next
21 | next
22 |
23 | ' Valores Fixed vão de 0.00 até 511.99 Unsigned
24 | dim scroll_instant_vel as fixed = 0 'Velocity
25 | dim aceleration as fixed = 0.01 'Aceleration
26 | dim scroll_pos as fixed = 0 'Position
27 |
28 | enable_global_int()
29 |
30 |
31 | Do 'main
32 |
33 | j = joypad6b_read(0)
34 |
35 | if j.btn_right then ' Right to speed up
36 | scroll_instant_vel += aceleration
37 | elseif not(j.btn_up) then ' Up to conserve speed
38 | if _fixed(scroll_instant_vel <= 0.02) then scroll_instant_vel = 0 else scroll_instant_vel -= aceleration ' Else = slow down
39 | end if
40 |
41 | set_cursor_position(0,25)
42 | print("Velocity: ")
43 | set_cursor_position(10,25)
44 | print_fixed(scroll_instant_vel)
45 | print(" Pixels per Frame ")
46 | scroll_pos += scroll_instant_vel
47 |
48 | Set_HorizontalScroll_position(scroll_pos,Plane_A)
49 |
50 | flag_vbl = 1
51 | while(flag_vbl) : wend
52 |
53 | Loop ' Laço infinito
54 |
55 | sub isr_vblank()
56 | flag_vbl = 0
57 | end sub
58 |
59 |
60 |
61 | imports"\system\genesis_std.nbs" ' Biblioteca contendo funções standard do Mega Drive
62 | imports"\system\print_lib.nbs"
63 | tile_map_A:
64 | imports"\gfx_data\forest_tmap_A.bin"
65 | tile_map_B:
66 | imports"\gfx_data\forest_tmap_A.bin"
67 | tile_data:
68 | imports"\gfx_data\forest_64x24_tiles.bin"
69 | forest_32_pal:
70 | DATAINT &h0200,&h0200,&h0222,&h0442,&h0422,&h0242,&h0444,&h0644 ' Pallette #0
71 | DATAINT &h0664,&h0866,&h0666,&h0000,&h0886,&h0A88,&h0464,&h0686
72 | DATAINT &h0000,&h0486,&h0000,&h0000,&h0000,&h0000,&h0000,&h0000 ' Pallette #1
73 | DATAINT &h0000,&h0000,&h0000,&h0000,&h0000,&h0000,&h0000,&h0000
74 |
--------------------------------------------------------------------------------
/Exemplos/Ex_Fixed_Scrolling/gfx_data/forest_64x24_tiles.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AlcaTechStudio/Alcatech_NextBasicMC68000_IDE/de08978207b1d04c3686281b0d8f02563aa515ff/Exemplos/Ex_Fixed_Scrolling/gfx_data/forest_64x24_tiles.bin
--------------------------------------------------------------------------------
/Exemplos/Ex_Fixed_Scrolling/gfx_data/forest_tmap_A.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AlcaTechStudio/Alcatech_NextBasicMC68000_IDE/de08978207b1d04c3686281b0d8f02563aa515ff/Exemplos/Ex_Fixed_Scrolling/gfx_data/forest_tmap_A.bin
--------------------------------------------------------------------------------
/Exemplos/Ex_Fixed_Scrolling/gfx_data/forest_tmap_B.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AlcaTechStudio/Alcatech_NextBasicMC68000_IDE/de08978207b1d04c3686281b0d8f02563aa515ff/Exemplos/Ex_Fixed_Scrolling/gfx_data/forest_tmap_B.bin
--------------------------------------------------------------------------------
/Exemplos/Ex_Mirror_Screen/Ex_Mirror_Screen.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AlcaTechStudio/Alcatech_NextBasicMC68000_IDE/de08978207b1d04c3686281b0d8f02563aa515ff/Exemplos/Ex_Mirror_Screen/Ex_Mirror_Screen.bin
--------------------------------------------------------------------------------
/Exemplos/Ex_Mirror_Screen/Ex_Mirror_Screen.nbs:
--------------------------------------------------------------------------------
1 | imports"\system\genesis_header.asm" ' Header de uma ROM de mega Drive Padrão (deve ficar sempre no topo)
2 |
3 | Equal Map_height "16"
4 | Equal Map_width "20"
5 |
6 | std_init()
7 | print_init()
8 |
9 | '[...] O que for colocado aqui sera executado apenas uma vez
10 |
11 | 'First Half'
12 | for y=0 to Map_height
13 | for x=0 to Map_width
14 | draw_tile( peek(addressof(tile_map) + ((x + (y*Map_width))*2) as word), x,y, Plane_A)
15 | next y
16 | next y
17 | 'Mirrored Half'
18 | for y=0 to Map_height
19 | for x=0 to Map_width
20 | draw_tile( peek(addressof(tile_map) + (((y*Map_width) + ((Map_width-1)-x))*2) as word) or H_flip, x+(Map_width),y, Plane_A)
21 | next y
22 | next y
23 |
24 |
25 |
26 | Do 'main
27 |
28 |
29 | Loop ' Laço infinito
30 |
31 | tile_map: '20x15 Mirrored 40x15'
32 | dataint 62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,22
33 | dataint 62,62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,22
34 | dataint 62, 0,62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,22
35 | dataint 62, 0, 0,62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,22
36 | dataint 62, 0, 0, 0,62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,22
37 | dataint 62, 0, 0, 0, 0,62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,22
38 | dataint 62, 0, 0, 0, 0, 0,62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,22
39 | dataint 62, 0, 0, 0, 0, 0, 0,62,62,62,62,62,62,62,62,62,62,62,62,22
40 | dataint 62, 0, 0, 0, 0, 0, 0,62,62,62,62,62,62,62,62,62,62,62,62,22
41 | dataint 62, 0, 0, 0, 0, 0,62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,22
42 | dataint 62, 0, 0, 0, 0,62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,22
43 | dataint 62, 0, 0, 0,62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,22
44 | dataint 62, 0, 0,62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,22
45 | dataint 62, 0,62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,22
46 | dataint 62,62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,22
47 | dataint 62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,22
48 |
49 | imports"\system\genesis_std.nbs" ' Biblioteca contendo funções standard do Mega Drive
50 | imports"\system\print_lib.nbs"
--------------------------------------------------------------------------------
/Exemplos/Ex_Physics/Ex_Physics.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AlcaTechStudio/Alcatech_NextBasicMC68000_IDE/de08978207b1d04c3686281b0d8f02563aa515ff/Exemplos/Ex_Physics/Ex_Physics.bin
--------------------------------------------------------------------------------
/Exemplos/Ex_Physics/Ex_Physics.nbs:
--------------------------------------------------------------------------------
1 | imports"\system\genesis_header.asm" ' Header de uma ROM de mega Drive Padrão (deve ficar sempre no topo)
2 |
3 | equal Gravidade "0.03"
4 | equal Aceleracao "0.05"
5 | equal friccao "0.92"
6 |
7 | equal altura_sprite "7"
8 | equal largura_sprite "7"
9 | equal largura_mapa "23"
10 |
11 | structure _player
12 | dim x as signed fixed
13 | dim y as signed fixed
14 | dim vx as signed fixed
15 | dim vy as signed fixed
16 | dim colpX_offset as integer
17 | dim colpy_offset as integer
18 | end structure
19 |
20 | dim player1 as new _player
21 |
22 | std_init()
23 | print_init()
24 |
25 | 'Inicializa o Sprite
26 | set_sprite_size(0,0,0)
27 | set_sprite_gfx(0,2,0)
28 | player1.x = 2*8
29 | player1.y = 5*8
30 | 'Desenha a tela'
31 | for y = 0 to 8
32 | for x = 0 to 23
33 | draw_tile((peek(addressof(tile_map) + (x + (y* largura_mapa)) as byte)), x,y, Plane_A)
34 | next x
35 | next y
36 |
37 |
38 |
39 | '[...] O que for colocado aqui sera executado apenas uma vez
40 | enable_global_int()
41 |
42 | dim jump_rpt as integer = 0
43 |
44 | Do 'main
45 |
46 | ' Forcas dissipativas
47 | player1.vx *= friccao
48 | player1.vy += Gravidade
49 | player1.vy *= 0.95
50 |
51 | 'Le o input do Joystick
52 | joy = joypad6b_read(0)
53 |
54 | 'Aceleracao no Eixo X
55 | if bit_test(joy, btn_Right) then
56 | player1.vx+=Aceleracao
57 | elseif bit_test(joy, btn_Left) then
58 | player1.vx-=Aceleracao
59 | end if
60 | 'Aceleracao no eixo Y'
61 | if bit_test(joy, btn_Up) then ' Pulo'
62 | if jump_rpt < 15 then ' Pula mais alto caso o botão seja pressionado por mais tempo'
63 | player1.vy-=0.15
64 | jump_rpt+=1
65 | end if
66 | else
67 | jump_rpt = 0
68 | end if
69 | ' Checa a Colisao Horizontal
70 | player1.x += player1.vx
71 | if get_colision(player1.x,player1.y) then
72 | player1.x -= player1.vx
73 | end if
74 | ' Checa a Colisao Vertical
75 | player1.y += player1.vy
76 | if get_colision(player1.x,player1.y) then
77 | player1.y -= player1.vy
78 | end if
79 |
80 | set_sprite_position(0,128+player1.x ,128+player1.y )
81 |
82 | set_cursor_position(0,10)
83 | print("X_pixel: ") : print_var(player1.x) : print(" ")
84 | set_cursor_position(0,11)
85 | print("Y_pixel: ") : print_var(player1.y) : print(" ")
86 | set_cursor_position(0,12)
87 | print("X_vel : ") : print_signed_fixed(player1.vx) : print(" ")
88 | set_cursor_position(0,13)
89 | print("Y_vel : ") : print_signed_fixed(player1.vy) : print(" ")
90 |
91 |
92 | 'Limita o Frame Rate'
93 | flag_vbl = 1
94 | while(flag_vbl) : wend
95 |
96 | Loop ' Laço infinito
97 |
98 | sub isr_Vblank()
99 | update_sprite_table()
100 | flag_vbl = 0
101 | end sub
102 |
103 | ' Retorna True caso algum vertice do Sprite toque um tile que não seja Zero
104 | function get_colision(byval x_p as integer, byval y_p as integer) as integer
105 |
106 | if peek(addressof(tile_map) + x_p/8 + ((y_p/8) * largura_mapa) as byte) then 'Diagonal Superior Esquerda do Sprite'
107 | return 1
108 | else if peek(addressof(tile_map) + (x_p+largura_sprite)/8 + ((y_p/8) * largura_mapa) as byte) then 'Diagonal Superior Direita do Sprite'
109 | return 1
110 | else if peek(addressof(tile_map) + x_p/8 + (((y_p+altura_sprite)/8) * largura_mapa) as byte) then 'Diagonal inferior Esquerda do Sprite'
111 | return 1
112 | else if peek(addressof(tile_map) + (x_p+largura_sprite)/8 + (((y_p+altura_sprite)/8) * largura_mapa) as byte) then 'Diagonal inferior direita do Sprite'
113 | return 1
114 | end if
115 |
116 | return 0
117 | end function
118 |
119 | imports"\system\genesis_std.nbs" ' Biblioteca contendo funções standard do Mega Drive
120 | imports "\system\print_lib.nbs"
121 |
122 | tile_map:
123 | DATA 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8
124 | DATA 8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8
125 | DATA 8,0,0,0,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8
126 | DATA 8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,8,0,0,0,8
127 | DATA 8,0,0,0,0,0,0,0,0,0,8,8,0,0,0,0,0,0,0,0,0,0,8
128 | DATA 8,0,0,0,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8
129 | DATA 8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8
130 | DATA 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8
--------------------------------------------------------------------------------
/Exemplos/Ex_Pseudo3D_Raster/Ex_Pseudo3D_Raster.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AlcaTechStudio/Alcatech_NextBasicMC68000_IDE/de08978207b1d04c3686281b0d8f02563aa515ff/Exemplos/Ex_Pseudo3D_Raster/Ex_Pseudo3D_Raster.bin
--------------------------------------------------------------------------------
/Exemplos/Ex_Pseudo3D_Raster/Ex_Pseudo3D_Raster.nbs:
--------------------------------------------------------------------------------
1 | imports"\system\genesis_header.asm" ' Header de uma ROM de mega Drive Padrão (deve ficar sempre no topo)
2 | ' Variaveis Globais'
3 | dim vb_flag as integer
4 | dim joy_buttons as integer
5 | dim last_joybtn as integer
6 | dim VscrollA[224] as integer
7 | dim lineDisplay as byte
8 |
9 | dim top_hill as signed fixed
10 | dim botom_hil as signed fixed
11 | dim sline as integer = 100
12 | ' Inicialização das Bibliotecas'
13 | std_init()
14 | print_init()
15 | set_text_plane(Plane_A)
16 | set_text_pal(palette_1)
17 | ' Carrega os dados da pista pra Vram
18 | load_tiles_dma(addressof(road_tiledata),90,256)
19 | load_cram_dma(addressof(road_pal),32,0)
20 | ' Desenha a pista'
21 | for y = 0 to 28
22 | for x = 0 to 64
23 | draw_tile(peek(addressof(road_tilemap) + ((x + (y*64))*2) as word) +256, x,y, Plane_B)
24 | next
25 | next
26 | ' Centraliza a tela na posição horizontal'
27 | Set_HorizontalScroll_position(((512-320)/2),Plane_B) ' Centraliza a posição de Scroll Horizontal
28 | ' Renderiza a pista pela primeira Vez'
29 | renderiza_pista(top_hill,botom_hil,sline)
30 |
31 | ' Interrupção Vertical (ativado por default)
32 | Enable_H_int() ' Ativa Interrupção horizontal
33 | set_hint_counter(0) ' Interrupção vai ocorrer em todas as scanlines
34 | enable_global_int() ' Ativa interrupções Globais
35 |
36 | Do 'main
37 |
38 | joy_buttons = joypad6b_read(0)
39 |
40 | if last_joybtn <> joy_buttons then
41 | if joy_buttons.btn_up then
42 | top_hill += 0.007
43 | elseif joy_buttons.btn_down then
44 | top_hill -= 0.007
45 | end if
46 |
47 | if joy_buttons.btn_left then
48 | botom_hil += 0.007
49 | elseif joy_buttons.btn_right then
50 | botom_hil -= 0.007
51 | end if
52 |
53 | if joy_buttons.btn_a then
54 | sline += 1
55 | elseif joy_buttons.btn_b then
56 | sline -= 1
57 | end if
58 |
59 | renderiza_pista(top_hill,botom_hil,sline)
60 | end if
61 |
62 | last_joybtn = joy_buttons
63 | vb_flag=1
64 | while(vb_flag) : wend
65 |
66 | Loop ' Laço infinito
67 |
68 |
69 | sub renderiza_pista(byval dy1 as signed fixed, byval dy2 as signed fixed, byval segmentline as integer)
70 |
71 | dim current_drawing_pos as signed fixed = 223.0
72 | dim horizon_line as integer = 223
73 |
74 | dim dy as signed fixed = dy1
75 | dim ddy as signed fixed = 0.0
76 |
77 | for bgy = 223 to 115 step -1
78 |
79 | dim cdp as integer = current_drawing_pos 'O compilador ja faz o casting automatico de fixed pra integer
80 |
81 | if bgy = segmentline then dy = dy2
82 |
83 | if cdp <= horizon_line then
84 | VscrollA[cdp] = bgy - cdp
85 | horizon_line = cdp
86 | end if
87 |
88 | ddy += dy
89 |
90 | dim delta_drawing_pos as signed fixed = ddy + 1.0
91 | dim next_drawing_pos as signed fixed = current_drawing_pos - delta_drawing_pos
92 | dim ndp as integer = next_drawing_pos
93 |
94 | if (cdp - ndp > 1) then
95 | while(cdp > ndp)
96 | cdp -= 1
97 | if (cdp <= horizon_line) then
98 | VscrollA[cdp] = bgy - cdp
99 | horizon_line = cdp
100 | end if
101 | wend
102 | end if
103 | current_drawing_pos = next_drawing_pos
104 | next
105 |
106 | dim h as signed integer = horizon_line-1
107 | while (h >= 16)
108 | h-=1
109 | VscrollA[h] = -h
110 | wend
111 |
112 | ' Print Debug Data'
113 | set_cursor_position(0,1)
114 | print("Dist_Y1: ")
115 | set_cursor_position(8,1)
116 | print_signed_fixed(top_hill)
117 | set_cursor_position(0,2)
118 | print("Dist_Y2: ")
119 | set_cursor_position(8,2)
120 | print_signed_fixed(botom_hil)
121 | set_cursor_position(0,3)
122 | print("SegLine: ")
123 | set_cursor_position(8,3)
124 | print_var(sline)
125 | end sub
126 |
127 | ' Interrupção Vertical
128 | sub isr_Vblank()
129 | lineDisplay = 0
130 | vb_flag = 0 ' Limpa o Flag de interrupção Vertical (marca o inicio do proximo frame)
131 | end sub
132 |
133 | ' Interrupção Horizontal (scaling no Plano A)
134 | sub isr_Hblank()
135 | _asm_block #__
136 | movem.l d0-d1/a0,-(a7)
137 |
138 | moveq #0,d0
139 | moveq #0,d1
140 | move.b _global_lineDisplay,d1
141 | add.w d1,d1
142 | lea _global_VscrollA,a0
143 | move.w 0(a0,d1.w),D0
144 |
145 | lea $C00004,a0
146 |
147 | moveq #2,d1
148 | and.w #$3FF,D0 ;Resto de divisão por 1023
149 | swap D1
150 | add.l #$40000010,D1
151 | move.l D1,(a0)
152 | move.w D0,-4(a0)
153 |
154 | moveq #1,d0
155 | add.b d0,_global_lineDisplay
156 |
157 | movem.l (a7)+,d0-d1/a0
158 | __# _asm_block_end
159 | end sub
160 |
161 | imports "\system\genesis_std.nbs" ' Biblioteca contendo as funções standard do Mega Drive
162 | imports "\system\print_lib.nbs" ' Biblioteca contendo as funções print para o Mega Drive
163 | road_pal:
164 | DATAINT &h0CC6,&h0CC6,&h0282,&h0228,&h0666,&h0EEE,&h0000,&h0000
165 | DATAINT &h0000,&h0000,&h0000,&h0000,&h0000,&h0000,&h0000,&h0000
166 | DATAINT &h0000,&h0000,&h0000,&h0000,&h0000,&h0000,&h0000,&h0000 ' Pallet for Printed Text
167 | DATAINT &h0000,&h0000,&h0000,&h0000,&h0000,&h0000,&h0000,&h0000
168 | road_tilemap:
169 | imports"\data\road_tilemap.bin"
170 |
171 | road_tiledata:
172 | imports "\data\road_tiles.bin"
173 |
174 |
--------------------------------------------------------------------------------
/Exemplos/Ex_Pseudo3D_Raster/data/road.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AlcaTechStudio/Alcatech_NextBasicMC68000_IDE/de08978207b1d04c3686281b0d8f02563aa515ff/Exemplos/Ex_Pseudo3D_Raster/data/road.png
--------------------------------------------------------------------------------
/Exemplos/Ex_Pseudo3D_Raster/data/road_tilemap.bin:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | ! "
6 | # $ % &