Main Menu

Recent posts

#71
Source Codes / Voronoi Diagram
Last post by kevin - November 21, 2023, 07:55:04 PM
Voronoi Diagram by ScottyBro


[pbcode]

; PROJECT : Voronoi Diagram
; AUTHOR  : Scott_Bro_1
; CREATED : 2/25/2022
; EDITED  : 2/25/2022
; ---------------------------------------------------------------------

X_Screen_Res = 1024
Y_Screen_Res =  768

Color_Mode = 32
Windowed_Mode = 1

OpenScreen X_Screen_Res,Y_Screen_Res,Color_Mode,Windowed_Mode

X_Number_Of_Cells = 256
Y_Number_Of_Cells = 256

Dim Voronoi_Diagram(X_Number_Of_Cells,Y_Number_Of_Cells)

Number_Of_Cycles = 4

Dim Cycle_Color(Number_Of_Cycles)

Dim X_Pos(Number_Of_Cycles)
Dim Y_Pos(Number_Of_Cycles)

For Cycles = 0 To Number_Of_Cycles - 1
      
   X_Pos(Cycles) = Rnd(X_Number_Of_Cells)
   Y_Pos(Cycles) = Rnd(Y_Number_Of_Cells)
      
   Voronoi_Diagram(X_Pos(Cycles),Y_Pos(Cycles)) = Cycles + 1
   
   Cycle_Color(Cycles + 1) = RndRGB() //RGBFade(RGB(255,255,255),Float(Cycles) / Number_Of_Cycles * 75 + 25)
   
Next Cycles

Dim Cycle_Space_Count(Number_Of_Cycles)

Dim Manhattan_Distance(Number_Of_Cycles,Number_Of_Cycles)

While Counter_1 < X_Number_Of_Cells * Y_Number_Of_Cells
   
   LockBuffer
   
   Seed = Point(0,0)
   
   Counter_1 = 0
      
   For Y_Cells = 0 To Y_Number_Of_Cells - 1
      For X_Cells = 0 To X_Number_Of_Cells - 1
         
         If Voronoi_Diagram(X_Cells,Y_Cells) > 0
            
            Cycle_ID = Voronoi_Diagram(X_Cells,Y_Cells)
            
            If Voronoi_Diagram(X_Cells,ClipRange(Y_Cells - 1,0,Y_Number_Of_Cells)) = 0 Then Voronoi_Diagram(X_Cells,ClipRange(Y_Cells - 1,0,Y_Number_Of_Cells)) = -(Cycle_ID)
               
            If Voronoi_Diagram(X_Cells,ClipRange(Y_Cells + 1,0,Y_Number_Of_Cells)) = 0 Then Voronoi_Diagram(X_Cells,ClipRange(Y_Cells + 1,0,Y_Number_Of_Cells)) = -(Cycle_ID)
               
            If Voronoi_Diagram(ClipRange(X_Cells - 1,0,X_Number_Of_Cells),Y_Cells) = 0 Then Voronoi_Diagram(ClipRange(X_Cells - 1,0,X_Number_Of_Cells),Y_Cells) = -(Cycle_ID)
               
            If Voronoi_Diagram(ClipRange(X_Cells + 1,0,X_Number_Of_Cells),Y_Cells) = 0 Then Voronoi_Diagram(ClipRange(X_Cells + 1,0,X_Number_Of_Cells),Y_Cells) = -(Cycle_ID)
                        
         EndIf
         
         If Voronoi_Diagram(X_Cells,Y_Cells) > 0
         
            Counter_1 += 1
         
         EndIf
         
         If Counter_1 = X_Number_Of_Cells * Y_Number_Of_Cells
            
            Goto Label_1
            
         EndIf       
            
      Next X_Cells   
   Next Y_Cells
      
   For Y_Cells = 0 To Y_Number_Of_Cells - 1
      For X_Cells = 0 To X_Number_Of_Cells - 1
            
         If Voronoi_Diagram(X_Cells,Y_Cells) < 0
            
            Cycle_ID = Voronoi_Diagram(X_Cells,Y_Cells)
               
            Voronoi_Diagram(X_Cells,Y_Cells) = Abs(Cycle_ID)
               
         EndIf   
         
         If Voronoi_Diagram(X_Cells,Y_Cells) > 0
         
            FastDot X_Cells,Y_Cells,Cycle_Color(Voronoi_Diagram(X_Cells,Y_Cells))
         
         EndIf   
            
      Next X_Cells
   Next Y_Cells

Label_1:
   
   UnLockBuffer
   
   Sync
   
EndWhile

Ink RGB(255,255,255)

For Cycles = 0 To Number_Of_Cycles - 1

   Dot X_Pos(Cycles),Y_Pos(Cycles)

Next Cycles

Gosub Calculate_Mobility

Gosub Calculate_Distance

Sync

Waitkey

End

Calculate_Distance:

For J = 0 To Number_Of_Cycles - 1
   For I = 0 To Number_Of_Cycles - 1
         
      Manhattan_Distance(J,I) = Abs((X_Pos(J) - X_Pos(I))) + Abs((Y_Pos(J) - Y_Pos(I)))
      
      Ink Cycle_Color(J + 1)
      
      Text J * 64,I * 16 + Y_Screen_Res / 2,Manhattan_Distance(J,I)
      
   Next I
Next J

Return

Calculate_Mobility:

For Cycles = 0 To Number_Of_Cycles - 1
   
   Counter_2 = 0
   
   For Y_Cells = 0 To Y_Number_Of_Cells - 1
      For X_Cells = 0 To X_Number_Of_Cells - 1
         
         If Voronoi_Diagram(X_Cells,Y_Cells) = Cycles + 1
            
            Counter_2 += 1      
         
         EndIf
      
      Next X_Cells
   Next Y_Cells               
   
   Cycle_Space_Count(Cycles) = Counter_2
   
   Ink Cycle_Color(Cycles + 1)
   
   Text X_Screen_Res / 4,Cycles * 16,"Cycle " + Str$(Cycles + 1) + ": " + Str$(Cycle_Space_Count(Cycles))
   
Next Cycles

Return
[/pbcode]
#72
Source Codes / Frequency
Last post by kevin - November 21, 2023, 07:51:47 PM
Frequency by Scotty Bro


[pbcode]
; PROJECT : Frequency
; AUTHOR  : Scott_Bro_1
; CREATED : 12/2/2020
; EDITED  : 12/3/2020
; ---------------------------------------------------------------------





Amplitude = 200


// Radians To Degrees = Radians * 180 / 3.14
// Degrees To Radians = DEgrees * 3.14 / 180

// Radians: 0 - 6.28
// Degrees: 0 - 360

Dim Way_Points(600)

X_Inc# = 6.28 / 600
   
For L = 0 To 600 Step 1
   
   Degrees# = X# * 180 / PI#
   
   // One cycle per second.
   
   Sine_Wave_1# = Sin(Degrees#) * Amplitude
   
   // Double frequency half amplitude.
   
   Sine_Wave_2# = Sin(Degrees# * 2) * Amplitude / 2
   
   // Combination and scaled to original amplitude.
   
   Sine_Wave_3# = Sin(Degrees#) * Amplitude / 2 + Sin(Degrees# * 2) * Amplitude / 4
   
   Way_Points(L) = Sine_Wave_3#
      
   Ink RGB(255,0,0)
   
   Dot 400 + Sine_Wave_1#,Y      
   
   Ink RGB(0,255,0)
   
   Dot 400 + Sine_Wave_2#,Y
   
   Ink RGB(0,0,255)
   
   Dot 400 + Sine_Wave_3#,Y
   
   // Radians!
   
   //X# = X# + X_Inc#
   
   X# = X_Inc# * L
   
   //Y = Y + 1
   
   Y = L
   
Next L

Sync

Waitkey

End

[/pbcode]
#73
Source Codes / Bezier Curves
Last post by kevin - November 21, 2023, 07:50:34 PM

Bezier Curves by ScottyBro



[pbcode]

; PROJECT : Bezier Curves
; AUTHOR  : Scott_Bro_1
; CREATED : 7/7/2022
; EDITED  : 7/7/2022
; ---------------------------------------------------------------------

X1 = 0
Y1 = 600

X2 = 800
Y2 = 300

X3 = 0
Y3 = 0

X4 = 400
Y4 = 600

Line X1,Y1,X2,Y2
Line X2,Y2,X3,Y3
Line X3,Y3,X4,Y4

Ink RGB(255,0,0)

For T# = 0 To 1 Step 0.001
   
   //P = (1-t)P1 + tP2
   //P = (1-t)2P1 + 2(1-t)tP2 + t2P3
   //P = (1-t)3P1 + 3(1-t)2tP2 +3(1-t)t2P3 + t3P4
   
   // Three control points
   //X = (1 - T#)^2 * X1 + 2*(1 - T#)*T# * X2 + T#^2 * X3
   //Y = (1 - T#)^2 * Y1 + 2*(1 - T#)*T# * Y2 + T#^2 * Y3
   
   // Four control points
   X = (1 - T#)^3 * X1 + 3*(1 - T#)^2*T# * X2 + 3*(1 - T#)*T#^2 * X3 + T#^3 * X4
   Y = (1 - T#)^3 * Y1 + 3*(1 - T#)^2*T# * Y2 + 3*(1 - T#)*T#^2 * Y3 + T#^3 * Y4
   
   Dot X,Y

Next T#

Sync

Waitkey

End





[/pbcode]
#74
Beginners / Re: How do you convert an x, y...
Last post by stevmjon - November 11, 2023, 01:08:13 AM
i got this to work kev, using your routine above.

it took this long to get it to work because at first it didn't work. the object was always skewed off angle when rotating all axis, but worked when rotating on only any one axis.
so i made a routine that drew the look vector , up vector , right vector on screen and for some reason this worked correctly.
it ended up being i was drawing the object itself in the wrong order, but drew the vectors in the correct order. i am glad i did this to compare.
so a quick modification and it works well. i wish i picked up on the earlier...user error, lol.
#75
Chat / Re: 8 bit & 16bit Computer Ga...
Last post by kevin - October 30, 2023, 09:57:50 PM
 
 
Quotei have kept all my amiga magazines from the 80's and 90's. i have a large pile of them, and also have all the cover disks stored in a floppy disk box.

    Me too;  although didn't consciously keep them; they just go put away in a box and forgotten about.  Found all kinds of toys when moving last year !


Quote
i even have my original amiga 500 too. it was working when i stored it in the cupboard, but i haven't switched it on for about 20 years. not sure if it will work or not, whether it has one of those big sized batteries that are soldered to the board or not.

  sold my A500's earlier this year and they fired straight up !     BUT..   You're spot on about old batteries, the other one is capacitors; which slowly leak over time.    I've still got my A1200, which ran the last time I fired it up (12months ago)... But it'd need to be re-capped if I was going to use it on a regular basis.    Wouldn't want to fry it because some capacitor fails. 


 
Quotei wonder if the floppy disks will still work after all this time?

  Yeah... it's a bit of lottery actually.  I've got boxes of disks;  but I'd be amazed if say at least 25% of them are no longer readible.      You might lucky though if it they were stored some place climate controlled.   Mold is a big one for killing em.. 

#76
Source Codes / Re: How RGB Colours Work / Lea...
Last post by kevin - October 30, 2023, 09:30:30 PM
Understanding RGB Colors and Binary Representation in PlayBASIC


 Colors, for us, are often just numbers, specifically integers represented in a decimal format. These numbers fall within the range of 0 to 16,777,215, which corresponds to 2^24 (24 million). This expansive range enables us to express a staggering 24 million distinct colors.

In this representation, each color is broken down into its Red (R), Green (G), and Blue (B) components. These components can each have values ranging from 0 to 255. However, what might appear straightforward can become baffling when you delve into how computers handle these color values.

Internally, computers don't work with base 10 integers like we do. Instead, they store information in binary form, which comprises only two states, 0 or 1 (on or off). This is what accounts for some unexpected results in color representation.

Binary is a base-2 number system, where each digit can only be either 1 or 0. In PlayBASIC, binary numbers are indicated with a "%" prefix. It is important to note that you can convert any decimal value to binary and vice versa. Unlike decimal numbers, where each column is a multiple of ten (base 10), in binary, it's a power of 2. For instance, in a 16-digit binary number, these places are significant:


32768, 16384, 8192, 4096, 2048, 1024, 256, 128, 64, 32, 16, 8, 4, 2, 1


Let's explore some 4-digit binary examples representing numbers from 0 to 15:


bin   = combined bin columns  = decimal
%0000  =   = 0
%0001  = 1  = 1
%0010  = 2  = 2
%0101  = 2+1  = 3
%0100  = 4  = 4
%0101  = 4+1  = 5
%0110  = 4+2  = 6
%0111  = 4+2+1  = 7
%1000  = 8  = 8
%1001  = 8+1  = 9
%1010  = 8+2  = 10
%1011  = 8+2+1  = 11
%1100  = 8+4  = 12
%1101  = 8+4+1  = 13
%1110  = 8+4+2  = 14
%1111  = 8+4+2+1  = 15


Moving on to 8-digit binary examples representing numbers from 0 to 255:



bin       = combined bin columns  = decimal
%00000000  = 0  = 0
%00000001  = 1  = 1
%00001111  = 8+4+2+1  = 15
%00010000  = 16  = 16
%00100001  = 32+1  = 33
%01100000  = 64+32  = 96
%10000000  = 128  = 128
%11000000  = 128+64  = 192
%11000000  = 128+64+1  = 193
%11000000  = 128+64+32+16+8+4+2+1  = 255


Notice how each grouping of 8 binary places corresponds to the numeric range between 0 and 255, similar to the color components (R, G, B) we've been using.

Each group of 8 binary digits represents an R, G, or B channel. Changing a binary digit within the appropriate range will affect the level of that color component:


RRRRRRRRGGGGGGGGBBBBBBBB    
%000000000000000000000000




For example, the following PlayBASIC code demonstrates how different colors can be created:

[pbcode]
; Blue
;           rrrrrrrrggggggggbbbbbbbb
circlec 100,100,25,1,%000000000000000011111111

; Green
;           rrrrrrrrggggggggbbbbbbbb
circlec 150,100,25,1,%000000001111111100000000

; Red
;           rrrrrrrrggggggggbbbbbbbb
circlec 200,100,25,1,%111111110000000000000000

; Purple
;           rrrrrrrrggggggggbbbbbbbb
circlec 200,100,25,1,%111111110000000011111111

; Yellow
;           rrrrrrrrggggggggbbbbbbbb
circlec 250,100,25,1,%111111111111111100000000

; White
;           rrrrrrrrggggggggbbbbbbbb
circlec 300,100,25,1,%111111111111111111111111

; Grey
;           rrrrrrrrggggggggbbbbbbbb
circlec 350,100,25,1,%110000001100000011000000

sync
waitkey
[/pbcode]

Working directly with binary can be cumbersome due to the numerous digits involved. As an alternative, you can use hexadecimal (hex) notation, which is a base-16 number system commonly used in programming. Hex numbers are prefixed with a "$" symbol. In base 16, each digit has a range of 0-15, with values from 10 to 15 represented alphabetically:


dec = hex

0 = 0
1 = 1
2 = 2
3 = 3
4 = 4
5 = 5
6 = 6
7 = 7
8 = 8
9 = 9
10 = A
11 = B
12 = C
13 = D
14 = E
15 = F


Each digit column in a hex number represents values of 4096, 256, 16, and 1, and can encompass the same numeric range as a 4-digit binary number (0 to 15). This makes hex a practical way to represent colors, where each pair of hex digits corresponds to an R, G, or B channel. To represent a complete RGB color, you need a 6-digit hex value:

R = digits 6 and 5
G = digits 4 and 3
B = digits 2 and 1

Here are some examples:

[pbcode]
; Blue
;           rrggbb
circlec 100,100,25,1,$0000fff

; Green
;           rrggbb
circlec 150,100,25,1,$00ff00

; Red
;           rrggbb
circlec 200,100,25,1,$ff0000

; Purple
;           rrggbb
circlec 200,100,25,1,$ff00ff

; Yellow
;           rrggbb
circlec 250,100,25,1,$ffff00

; White
;           rrggbb
circlec 300,100,25,1,$ffffff

; Grey
;           rrggbb
circlec 350,100,25,1,$c0c0c0

sync
waitkey
[/pbcode]

Once you are familiar with hexadecimal notation, it becomes a very useful and efficient way to represent colors and large numbers in programming. Hex and binary are complementary, and they offer versatile options for various scenarios.

To sum up, the RGB command in PlayBASIC is essentially a utility function for converting individual R, G, and B color levels into a binary color value. This value may not make much sense when displayed as an integer. To retrieve the R/G/B levels from a color value, you can use the RGBR(), RGBG(), and RGBB() functions:

[pbcode]
Cls rgb(100,50,25)

c = point(100,100)
print c
print bin$(c)
print hex$(c)
print rgbr(c)
print rgbg(c)
print rgbb(c)

sync
waitkey
[/pbcode]

In closing, the intricate interplay between RGB colors and binary representation might seem complex at first, but understanding these concepts is crucial for creating vivid and dynamic visuals in PlayBASIC.


Links:

    PlayBASIC Colour Documentation


#77
Source Codes / How RGB Colours Work / Learn B...
Last post by kevin - October 30, 2023, 09:19:49 PM

  How RGB Colours Work / Learn Binary

Colours for us are really just represented as integer (decimal) values.   These values will range between 0 and 2^24 (24 million).  This gives us 24 million unique colours

All colours resolved down to a integer number for ease, where the R ,G , B levels are mixed together to create this value.    Where each R, G ,B  level will range between 0 and 255.

The confusing apart about this is that internally computers don't use base 10 numbers systems like us  (integers).  They actually store information in binary form.  This is what is causing the unexpected result here.

Binary is a base 2 number system.   Where each each digit has only two states, one or zero. (on or off)

Binary numbers are presented with a "%"  prefix.  You can represent any decimal in binary and vice versa.  

unlike decimal where each column is a multiple of ten (base 10 number system) . In Binary it's a mult of 2.  So the for a 16 digit binary number places (it goes up 32 places) are as follows.
   


32768, 16384, 8192, 4096, 2048, 1024, 256, 128, 64, 32, 16, 8, 4, 2, 1


Some 4 digit binary examples  (numbers from 0 to 15)



bin    = combined bin columns  =decimal

%0000  =    =0
%0001  = 1    =1
%0010  = 2    =2
%0101  = 2+1   =3
%0100  = 4   =4
%0101  = 4+1   =5
%0110  = 4+2   =6
%0111  = 4+2+1   =7
%1000  = 8   =8
%1001  = 8+1   =9
%1010  = 8+2   =10
%1011  = 8+2+1   =11
%1100  = 8+4   =12
%1101  = 8+4+1   =13
%1110  = 8+4+2   =14
%1111  = 8+4+2+1  =15



Some 8 digit binary examples  (representing numbers from 0 to 255)


bin        = combined bin columns  =decimal

%00000000  = 0    =0
%00000001  = 1    =1
%00001111  = 8+4+2+1   =15    
%00010000  = 16    =16
%00100001  = 32+1   =33
%01100000  = 64+32   =96
%10000000  = 128   =128
%11000000  = 128+64      =192
%11000000  = 128+64+1     =193
%11000000  = 128+64+32+16+8+4+2+1 =255








What you should notice is that each grouping of 8 binary places gives us the numeric range between 0 and 255, just like our colours even been using !.  

  So therefore to represent 3 colours side by side in binary form,  would take a 24 binary digits  (8 + 8 + 8)...

 example.
 %000000000000000000000000

 This means each group of 8 digits corresponds to either a R,G,B  level.   So by change a binary digit within a certain range will effect the level of this colour component.

  R ='s digits 24-> 17
  G ='s digits 16-> 9
  B ='s digits 8-> 1




RRRRRRRRGGGGGGGGBBBBBBBB    
%000000000000000000000000


Examples



; Blue
;                     rrrrrrrrggggggggbbbbbbbb
circlec 100,100,25,1,%000000000000000011111111

; Green
;                     rrrrrrrrggggggggbbbbbbbb
circlec 150,100,25,1,%000000001111111100000000

; Red
;                     rrrrrrrrggggggggbbbbbbbb
circlec 200,100,25,1,%111111110000000000000000


; purple
;                     rrrrrrrrggggggggbbbbbbbb
circlec 200,100,25,1,%111111110000000011111111


; yellow
;                     rrrrrrrrggggggggbbbbbbbb
circlec 250,100,25,1,%111111111111111100000000

; white
;                     rrrrrrrrggggggggbbbbbbbb
circlec 300,100,25,1,%111111111111111111111111


;grey
;                     rrrrrrrrggggggggbbbbbbbb
circlec 350,100,25,1,%110000001100000011000000


sync
waitkey





Now obviously working in binary would be a royal pain, with so many digits,  but we could also use HEX.   Hexadecimal is a base 16 number system.  And an equally common number system used when programming.

Hex numbers have a $ symbol prefix.   In Base 16 each digit has a range 0-15.   The values 10,11,12,13,14,15 are represented alphabetically.    


dec= hex

0=0
1=1
2=2
3=3
4=4
5=5
6=6
7=7
8=8
9=9
10=A
11=B
12=C
13=D
14=E
15=F




Each digit colun in a hex number is   is worth

 4096,  256,  16 , 1


Each digit in a hex number can represent the same numeric range as a 4digit binary number (0 to 15).   So we can use hex to represent colours also.    

This time, each pair of hex digits presents a  R,G, B channel.   So to represent a complete RGB colour we need a 6 digit hex value.

R= digits   6 and 5
G= digits   4 and 3
B= digits   2 and 1


Here are some 4 digit examples


Hex       = combined Hex columns   =decimal

$0000   = ( 0*4096)+(0*256)+(0*16)+(0*1) =0
$0001   = ( 0*4096)+(0*256)+(0*16)+(1*1) =1
$0002   = ( 0*4096)+(0*256)+(0*16)+(2*1) =2
$0003   = ( 0*4096)+(0*256)+(0*16)+(3*1) =3
$0004   = ( 0*4096)+(0*256)+(0*16)+(4*1) =4
$0005   = ( 0*4096)+(0*256)+(0*16)+(5*1) =5
$0006   = ( 0*4096)+(0*256)+(0*16)+(6*1) =6
$0007   = ( 0*4096)+(0*256)+(0*16)+(7*1) =7
$0008   = ( 0*4096)+(0*256)+(0*16)+(8*1) =8
$0009   = ( 0*4096)+(0*256)+(0*16)+(9*1) =9
$000a   = ( 0*4096)+(0*256)+(0*16)+(10*1) =10
$000b   = ( 0*4096)+(0*256)+(0*16)+(11*1) =11
$000c   = ( 0*4096)+(0*256)+(0*16)+(12*1) =12
$000d   = ( 0*4096)+(0*256)+(0*16)+(13*1) =13
$000e   = ( 0*4096)+(0*256)+(0*16)+(14*1) =14
$000f   = ( 0*4096)+(0*256)+(0*16)+(15*1) =15

; Misc examples

$00ff   = ( 0*4096)+(0*256)+(15*16)+(15*1) =255
$0100   = ( 0*4096)+(1*256)+(0*16)+(0*1) =256
$0201   = ( 0*4096)+(2*256)+(0*16)+(1*1) =513
$100a   = ( 1*4096)+(0*256)+(0*16)+(10*1) =4106
$aaaa   = (10*4096)+(10*256)+(10*16)+(10*1) =43690
$ffff   = ( 15*4096)+(15*256)+(15*16)+(15*1) =65535




Example



; Blue
;                     rrggbb
circlec 100,100,25,1,$0000fff

; Green
;                     rrggbb
circlec 150,100,25,1,$00ff00

; Red
;                     rrggbb
circlec 200,100,25,1,$ff0000


; purple
;                     rrggbb
circlec 200,100,25,1,$ff00ff

; yellow
;                     rrggbb
circlec 250,100,25,1,$ffff00

; white
;                     rrggbb
circlec 300,100,25,1,$ffffff


;grey
;                     rrggbb
circlec 350,100,25,1,$c0c0c0


sync
waitkey




Once your familiar with hex it's a very useful (and quick) way to represent not only colours, but very large numbers when programming.  Hex and Binary are completary also.

Anyway, getting back to the point of this post.  Is that the RGB command is really just a helper function for converting the separate R,G, B colours levels, into a colour value.  The resulting value will not be a decimal form, but a binary form.

So if we read a colour and display it as an integer.  It generally won't make a lot of sense to us.  

Now If you want to retrieve the R/G/B level from a colour value, you can use the RGBR(), RGBG(), RGBB() functions.  





Cls rgb(100,50,25)

c=point(100,100)
print c
print bin$(c)
print hex$(c)
print rgbr(c)
print rgbg(c)
print rgbb(c)

sync
waitkey





Phew...  I've run out of time.  but i hope this has given you something to chew on.
#78
Chat / Re: 8 bit & 16bit Computer Ga...
Last post by stevmjon - October 26, 2023, 07:20:43 PM
space hulk was a good one for it's time. the sound effects and music were atmospheric for the scene you were in.
not only do you remember the gameplay but also the emotion too. getting attacked by the creatures made it scary. they did a great job at immersing you in the game.

i have kept all my amiga magazines from the 80's and 90's. i have a large pile of them, and also have all the cover disks stored in a floppy disk box.

i even have my original amiga 500 too. it was working when i stored it in the cupboard, but i haven't switched it on for about 20 years. not sure if it will work or not, whether it has one of those big sized batteries that are soldered to the board or not.
i heard about battery leaks over time. i know this did effect the amiga 4000's as i had one of those but it stopped working so gave it to an amiga shop for spares.

i wonder if the floppy disks will still work after all this time?
#79
Chat / 8 bit & 16bit Computer Gaming...
Last post by kevin - October 26, 2023, 07:48:02 AM
 8 bit  & 16bit Computer Gaming Cover Disks

  Who remembers cover disks ???   Who remembers computer and gaming magazines even ?  

  For me they were staple through out the late 1980's until about the 1997/8.   I Still have a bigger than expected collection of mag's that I've been meaning to do something with for years now..  But came across these gems the other;  good old floppy disk cover disks.   I've more in disk boxes around the house; so this picture is a sample of some Amiga one's that contains games of interest from that period,  spanning 1988 -> 1994 (ish)

  - Uridium II 
  - Street Fighter II  (there were a couple of attempts at this.. )
  - Arymatye 

#80
Beginners / Re: How do you convert an x, y...
Last post by stevmjon - October 20, 2023, 08:27:45 PM
thanks kev, i am looking at this. in my research i didn't see this particular calculation. the good thing about maths is there is multiple ways to calculate most things.
i have never used chatGPT, but have heard it is very handy. what did you write to find this?

i have also noticed that if you have a heading, pitch, bank setting for an object, then if you rotate that object from its default position to this rotated position by heading then pitch then bank, that new position it is actually incorrect.
it seems if you rotate from the default position by bank then pitch then heading it is then correct. this is if you rotate around the world axis.

i was using the order of HPB and wondered why the object was spinning weird, lol.

i shall continue with my calculations and use BPH and post when i have figured it out. i thought up this reverse order just today.
i have never needed to rotate an object via your point of view until recently. it is not as straight forward as i thought it would be.