Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Starting a fighting game
1.- Using a buffer: basicly you blit stuff to a buffer, which is a virtual screen. Then, when you're done, you copy your buffer to screen to make changes visible, usually synchronizing it with the VGA refresh (WAIT &H3DA,8: WAIT &H3DA,8,8 stuff).

A buffer is just a piece of memory. It is very handy making it just like your screen, so copy is direct. VGA mode13h screen takes 64000 contiguous bytes, so that's all what we need. The easiest way of allocating 64000 contiguous bytes in QB is DIMming an array that takes 64000 bytes. For example, an integer array of 32000 elements (each element is 2 bytes, so 32000x2=64000):

Code:
DIM MyBuffer%(31999)  ' 0 to 31999 -> 32000 elements

You have three choices to implement a double buffer:

a.- The easiest: use a lib.
b.- Use GET and PUT along with Plasma357's routines (SetVideoSeg). SetVideoSeg just changes the VGA segment (&HA000) so QB thinks VGA is where you tell him it is (i.e. your buffer) so graphic stuff will be drawn on your buffer and not on screen.
c.- The hardest: Code your own blitters that draw to a buffer instead of drawing to screen.

To copy the buffer to video memory you can do three things, again:

a.- The easiest: Use a lib.
b.- You can grab somewhere a short ASM code embedded into a SUB that copies memory. It is called MemCopy and you can get it in the ABC packets (search google with qb memory copy abc). You can use SETVIDEOSEG to draw in your buffer, and MEMCOPY to copy to the actual screen.
c.- The hardes: Make your array compatible with the GET/PUT format and use PUT to copy it to screen. This involves doing some calculations, but SETVIDEOSEG won't work straightforward (without having to play a little bit with it).

This works 'cause while you are drawing stuff it is not seen, so you can clear the buffer and put your sprites again without being noticed by the player. When you copy the buffer to screen the objects will be completely drawn.

The basic double-buffer loop can be as follows:

Code:
DO
   ' Do game (movement and stuff).
   ' Draw stuff on buffer.
   ' Wait to VGA refresh (WAIT &H3DA,8: WAIT &H3DA,8,8)
   ' Copy buffer to screen
LOOP

2.- Segments and offsets come to play when you are doing buffering or when you want to access memory directly. How do you use them? Well, usually you use them in two circumstances:

a.- Directly accessing to variables and/or arrays to BSAVE or BLOAD stuff, that case you just use VARSEG(variable%) or VARSEG(array%(0)) to know the segment and VARPTR(variable%) or VARPTR(array%(0)) to know the offset.
b.- To use with libraries/SetVideoSeg/Memcopy: Just the same. For example, SetVideoSeg needs your buffer's segment, so you can call it with VARSEG(buffer%(0)). Memcopy needs segment and offset of source and destination. To copy your buffer to screen just...

Code:
MemCopy VARSEG(buffer%(0)), VARPTR(buffer%(0)), &HA000, 0, 64000

You are giving: 1.- your buffer segment. 2.- Your buffer offset. 3.- VGA segment, 4.- VGA offset, 5.- # of bytes to copy (64000).

3.- Of course it matters. It is not a good policy to consider stuff as "black boxes" that simply "do stuff". If you understand how things work you'll be able to improve your algorithms and/or maybe change some stuff when you come to a problem.

---

PS.- I suggest you to learn basic stuff like double buffering before trying to code a fighting game... Or it will be a nightmare.
SCUMM (the band) on Myspace!
ComputerEmuzone Games Studio
underBASIC, homegrown musicians
[img]http://www.ojodepez-fanzine.net/almacen/yoghourtslover.png[/i
Reply


Messages In This Thread
Starting a fighting game - by Kofman - 04-21-2003, 06:00 AM
Starting a fighting game - by LooseCaboose - 04-21-2003, 07:54 AM
Starting a fighting game - by Kofman - 04-21-2003, 07:35 PM
Starting a fighting game - by na_th_an - 04-21-2003, 10:37 PM
Starting a fighting game - by wizardlife - 04-22-2003, 01:39 AM
Starting a fighting game - by na_th_an - 04-22-2003, 02:28 AM
Starting a fighting game - by Kofman - 04-22-2003, 02:29 AM
Starting a fighting game - by na_th_an - 04-22-2003, 02:45 AM
Starting a fighting game - by Kofman - 04-22-2003, 02:52 AM
Starting a fighting game - by na_th_an - 04-22-2003, 02:55 AM
Starting a fighting game - by Kofman - 04-22-2003, 03:01 AM
Starting a fighting game - by wizardlife - 04-22-2003, 03:30 AM
Starting a fighting game - by Kofman - 04-22-2003, 03:33 AM
Starting a fighting game - by na_th_an - 04-22-2003, 05:40 AM
Starting a fighting game - by Kofman - 04-22-2003, 06:57 AM
Starting a fighting game - by wizardlife - 04-22-2003, 08:05 AM
Starting a fighting game - by Kofman - 04-23-2003, 03:56 AM
Starting a fighting game - by Kofman - 04-23-2003, 04:17 AM
Starting a fighting game - by Kofman - 04-23-2003, 04:23 AM
Starting a fighting game - by wizardlife - 04-23-2003, 06:11 AM
Starting a fighting game - by Kofman - 04-23-2003, 06:27 AM
Starting a fighting game - by wizardlife - 04-23-2003, 06:38 AM
Starting a fighting game - by wizardlife - 04-23-2003, 06:39 AM
Starting a fighting game - by Kofman - 04-23-2003, 07:32 AM
Starting a fighting game - by wizardlife - 04-23-2003, 08:16 AM
Starting a fighting game - by Rokkuman - 04-23-2003, 08:07 PM
Starting a fighting game - by wizardlife - 04-23-2003, 09:00 PM
Starting a fighting game - by Kofman - 04-26-2003, 09:05 AM
Starting a fighting game - by Kofman - 04-26-2003, 09:06 AM
Starting a fighting game - by wizardlife - 04-26-2003, 09:51 AM
Starting a fighting game - by Kofman - 04-26-2003, 07:41 PM
Starting a fighting game - by wizardlife - 04-26-2003, 09:33 PM
Starting a fighting game - by Kofman - 04-26-2003, 09:52 PM
Starting a fighting game - by Kofman - 05-08-2003, 10:11 PM
Starting a fighting game - by Kofman - 05-09-2003, 12:26 AM
Starting a fighting game - by wizardlife - 05-09-2003, 04:20 AM
Starting a fighting game - by Kofman - 05-09-2003, 04:37 AM
Starting a fighting game - by Kofman - 05-09-2003, 05:27 AM
Starting a fighting game - by na_th_an - 05-09-2003, 06:11 AM
Starting a fighting game - by Kofman - 05-09-2003, 06:44 AM
Starting a fighting game - by Kofman - 05-09-2003, 06:48 AM
Starting a fighting game - by wizardlife - 05-09-2003, 06:56 AM
Starting a fighting game - by Kofman - 05-09-2003, 09:10 AM
Starting a fighting game - by wizardlife - 05-10-2003, 12:01 AM
Starting a fighting game - by wizardlife - 05-10-2003, 12:20 AM
Starting a fighting game - by Kofman - 05-10-2003, 06:29 AM
Fascinating... - by Glenn - 05-10-2003, 06:53 AM
Re: Fascinating... - by wizardlife - 05-10-2003, 06:36 PM
Starting a fighting game - by Kofman - 05-11-2003, 12:17 AM
Starting a fighting game - by Kofman - 05-11-2003, 12:30 AM
Starting a fighting game - by wizardlife - 05-11-2003, 01:32 AM
Starting a fighting game - by Kofman - 05-11-2003, 02:52 AM
Starting a fighting game - by wizardlife - 05-11-2003, 03:52 AM
Starting a fighting game - by Kofman - 05-11-2003, 04:15 AM
Starting a fighting game - by Kofman - 05-11-2003, 04:24 AM
Starting a fighting game - by Kofman - 05-11-2003, 04:36 AM
How do I begin an animation engine - by Kofman - 05-11-2003, 04:41 AM
Starting a fighting game - by Kofman - 05-13-2003, 03:32 AM
Starting a fighting game - by na_th_an - 05-13-2003, 03:43 AM
Starting a fighting game - by Kofman - 05-13-2003, 04:57 AM
Possible answer... - by Glenn - 05-13-2003, 06:52 AM
Starting a fighting game - by na_th_an - 05-13-2003, 07:25 AM
Starting a fighting game - by wizardlife - 05-13-2003, 07:54 AM
Starting a fighting game - by na_th_an - 05-13-2003, 08:02 AM
Starting a fighting game - by wizardlife - 05-13-2003, 08:16 AM
Starting a fighting game - by Kofman - 05-14-2003, 05:35 AM
Did you see where... - by Glenn - 05-14-2003, 05:39 AM
Starting a fighting game - by na_th_an - 05-14-2003, 06:26 AM
I didn't see your other question... - by Glenn - 05-14-2003, 08:21 AM
Starting a fighting game - by Kofman - 05-19-2003, 02:05 AM
Starting a fighting game - by na_th_an - 05-19-2003, 04:53 AM
Starting a fighting game - by Kofman - 05-19-2003, 05:45 AM
Starting a fighting game - by na_th_an - 05-19-2003, 06:24 AM
Starting a fighting game - by toonski84 - 05-19-2003, 09:43 AM
Starting a fighting game - by na_th_an - 05-19-2003, 04:36 PM
Starting a fighting game - by Kofman - 05-19-2003, 05:10 PM
Starting a fighting game - by wizardlife - 05-20-2003, 04:05 AM
Starting a fighting game - by na_th_an - 05-20-2003, 06:17 AM
Starting a fighting game - by Kofman - 05-22-2003, 01:47 AM
Starting a fighting game - by Kofman - 05-22-2003, 03:35 AM
Starting a fighting game - by Kofman - 05-22-2003, 05:13 AM
Starting a fighting game - by Kofman - 05-22-2003, 06:07 AM
Starting a fighting game - by wizardlife - 05-22-2003, 06:41 AM
Starting a fighting game - by na_th_an - 05-22-2003, 07:06 AM
Starting a fighting game - by Kofman - 05-23-2003, 02:37 AM
Starting a fighting game - by Ninkazu - 05-23-2003, 02:40 AM
Starting a fighting game - by Kofman - 05-23-2003, 05:38 AM
Starting a fighting game - by Kofman - 05-25-2003, 12:27 AM
Starting a fighting game - by Kofman - 05-25-2003, 12:30 AM
Starting a fighting game - by na_th_an - 05-25-2003, 12:37 AM
Starting a fighting game - by Kofman - 05-25-2003, 12:57 AM
Starting a fighting game - by Kofman - 05-25-2003, 12:59 AM
Memory in real mode is accessed... - by Glenn - 05-25-2003, 03:48 AM
Starting a fighting game - by na_th_an - 05-25-2003, 04:59 AM
Starting a fighting game - by Kofman - 05-25-2003, 05:34 AM
Starting a fighting game - by na_th_an - 05-25-2003, 05:46 AM
No, Na_th_an,.. - by Glenn - 05-25-2003, 05:51 AM
Re: No, Na_th_an,.. - by na_th_an - 05-25-2003, 05:55 AM
Starting a fighting game - by na_th_an - 05-25-2003, 06:35 AM
Starting a fighting game - by na_th_an - 05-25-2003, 07:27 AM
Read what you just... - by Glenn - 05-25-2003, 07:57 AM
Starting a fighting game - by na_th_an - 05-25-2003, 06:29 PM
Starting a fighting game - by toonski84 - 05-25-2003, 08:47 PM
Starting a fighting game - by Kofman - 05-26-2003, 01:10 AM
Starting a fighting game - by na_th_an - 05-26-2003, 01:42 AM
Starting a fighting game - by Kofman - 05-27-2003, 05:43 AM
Starting a fighting game - by Ninkazu - 05-27-2003, 06:39 AM
Starting a fighting game - by na_th_an - 05-27-2003, 08:33 AM
Starting a fighting game - by LooseCaboose - 05-27-2003, 02:47 PM
Yes, we've been over that... :) - by Glenn - 05-27-2003, 10:20 PM
Starting a fighting game - by LooseCaboose - 05-28-2003, 03:27 AM
Starting a fighting game - by Rokkuman - 05-28-2003, 07:01 AM
Starting a fighting game - by Kofman - 05-28-2003, 07:15 AM
Starting a fighting game - by Kofman - 05-30-2003, 03:14 PM
Starting a fighting game - by Ninkazu - 05-30-2003, 04:29 PM
You only multiply by 8 in mode 13... - by Glenn - 05-30-2003, 06:44 PM
Starting a fighting game - by na_th_an - 05-30-2003, 07:57 PM
Starting a fighting game - by Kofman - 05-31-2003, 11:51 PM
Starting a fighting game - by Kofman - 06-03-2003, 06:18 AM
Starting a fighting game - by Kofman - 06-03-2003, 06:52 AM
Starting a fighting game - by na_th_an - 06-03-2003, 07:11 PM
Starting a fighting game - by Kofman - 06-04-2003, 04:11 AM
Starting a fighting game - by relsoft - 06-04-2003, 08:09 AM
Starting a fighting game - by na_th_an - 06-04-2003, 09:08 AM
Starting a fighting game - by Kofman - 06-04-2003, 03:27 PM
Neopaint loads PCX pictures just fine. - by Glenn - 06-04-2003, 03:34 PM
Starting a fighting game - by wizardlife - 06-04-2003, 09:22 PM
Starting a fighting game - by toonski84 - 06-05-2003, 12:26 AM
Starting a fighting game - by Kofman - 06-05-2003, 03:18 AM
Starting a fighting game - by Kofman - 06-05-2003, 04:16 AM
Starting a fighting game - by na_th_an - 06-05-2003, 09:21 AM
Starting a fighting game - by wizardlife - 06-08-2003, 06:19 AM
Starting a fighting game - by Kofman - 06-10-2003, 04:39 AM
Starting a fighting game - by ak00ma - 06-10-2003, 12:04 PM
Starting a fighting game - by na_th_an - 06-10-2003, 05:11 PM
Starting a fighting game - by Ninkazu - 06-10-2003, 05:11 PM
Starting a fighting game - by wizardlife - 06-10-2003, 08:26 PM
Starting a fighting game - by Piptol - 06-10-2003, 10:44 PM
Starting a fighting game - by Kofman - 06-11-2003, 01:05 AM
Starting a fighting game - by Rokkuman - 06-11-2003, 02:59 AM

Forum Jump:


Users browsing this thread: 4 Guest(s)