Game clones and similar games

https://osgameclones.com/ has an extensive list of opensource game clones. These are not all available on FreeBSD ports. Most of the games from https://www.maketecheasier.com/best-open-source-clones-of-great-old-games/ are in ports.


A few screenshots of clones and similar games running on FreeBSD
minetest-jpg.14250

games/minetest - clone of Minecraft.


0ad-jpg.14275

games/0ad - clone of Age of Empires franchise.


dune-jpg.14278

ra-jpg.14277

cnc-jpg.14276

games/openra - clones of Dune, Command & Conquer: Red Alert and Command & Conquer. Parts of the official games were opensourced and work on top of the openra engine, which is all included. The official CD's are only needed for ingame videos. It's fully playable without the CD. The engine can be played with other games, however, there's only 1 other opensource game, which isn't available in ports.


You can post screenshots of opensource clones and similar games. Post screenshots of games running on FreeBSD, also discuss game clones and similar games not on FreeBSD. Screenshots of those which are opensource can be shown also, but indicate if they're not on FreeBSD.


About fan games
While fan games are usually well intentioned and are meant to pay homage to an original game, they are often subject to IP (intellectual property) infringement unless they are endorsed by the makers of the original game. Often, developers have spent countless hours for their work to get a take-down notice. Clones are often different enough, that they aren't subject to IP infringement.
 
Allegro
devel/allegro as a C library has many games built on it that have looks of that from 8 and 16 bit consoles. The name once stood for Atari Low-Level Game Routines. This library in C has bindings to other programming languages.

Allegro based games
games/opensonic was discontinued perhaps because it was too similar to original Sonic games. It was replaced with the clone games/opensurge.
allegro-opensurge.jpg


games/alex4 has the appearance of a Gameboy game. It has the style of a Mario world with an alligator as a protagonist character that resembles Yoshi.
allegro-alex4.jpg


Use of Allegro with game engines and interpreters
games/ags is an opensource engine for adventure games which uses Allegro. For the website, see: https://www.adventuregamestudio.co.uk/site/ags/. For using the game engine on FreeBSD, see: Thread how-to-use-the-adventure-game-studio-engine.59843.

games/Scummvm which is the largest interpreter for graphical adventure games can run AGS built games. https://wiki.scummvm.org/index.php?title=AGS/Games#Freeware_Games
Sarien is obsolete, which Scummvm replaces it.
 
For more clones and remakes available on FreeBSD, use psearch -c games -s clone or psearch -c games -s remake.

As for fangames, psearch -c games -s fan -l | egrep "fan ?game" at this time shows only games/SRB2, which is of Sonic 3D. This is built on a modified Doom engine. https://www.srb2.org/ is the website, and their message board (forum) is pretty active.

For any fangame, if they had to, they could replace protagonist IP characters with ones from OpenSurge, and of the mascots of FreeBSD, MidnightBSD, MiniBSD, OpenDarwin or Tux. I can imagine an Ecco the Dolphin clone with the OpenBSD pufferfish mascot. Also, a Kolibri, Galaga or flying clone with a made up dragonfly for DragonflyBSD. Adaptations of old animations including of fairy tales, comics and cartoons which the copyright has expired could be used. There's so many combinations of opensource mascots and other opensource animations that can be used for different themes.

Resources on games
For source material on games
Updates
  • Above, Allegro is mentioned, which is Allegro 4. devel/Allegro5 is also available in ports, but there are currently no game ports for it on FreeBSD.
 
Last edited:
Console style retro gaming: 2nd, 3rd & 4th generation
Console gaming by generation up to 16-bit in CPU. Computer systems don't go by console generation, but their gaming will be compared by the computer's capability of graphics and its CPU to console specifications. There were computer systems that had capabilities of one generation, but had CPU processing power of another generation. These may have had a more capable CPU ahead of other consoles and PCs, which were available due to a higher price tag, but these were often confined by their graphical capabilities.

2nd generation
This style of gaming doesn't really have GPU's so, these lack backgrounds and advanced graphics. This is the gaming that early Atari games were known for. Bally Astrocade is also in this category. Most of these consoles and similar computer systems had 8-bit CPU's. TI-99 and Mattel Intellivision had 16-bit CPU's. The TI-99 computer had a 16 color palette, and its games were on the higher end compared to other consoles of this generation. Most consoles of this generation had 2, 8, 16, 32, and 128 color palettes. Basic programming language fit this era of gaming style.

CGA video cards for PCs can have 2, 4 or 16 colors depending on onboard memory. Graphics resolutions of CGA video cards are of 160x100; 320/640x200. It can display bitmap pictures and can play 2nd generation games. Interestingly, EGA gaming was capable of displaying 3D rendering. On the PC, while 16 colors is intended for text mode in CGA, an unofficial mode allows graphics, including games, to use 16 colors at once. Arcade CGA video games seemed to have full rendering of 16 on-screen colors at once for graphics mode at a sooner time than PC's. Newer CGA games may have had more advanced graphics rendering, comparable to the 3rd generation of gaming, yet were still limited to the same total colors and onscreen resolutions of CGA.
Paku_Paku.png
Many games of the time which this image is based off, were around before CGA.
Paku Paku (a Pacman clone), Round 42 (Invaders/Galaga clone), text adventure games with blue and purple shades, and Flight Simulator were types of games available on CGA video graphics. https://itch.io/jam/cga-jam/entries shows CGA games made with limitations to 4 colors.

For comparison, the 1st generation of gaming was basic monochrome games. They were pong and pong variants, some which represented other sport-like activities. The few 1st generation of console games other than pong used a basic a playable dot of light to represent the gaming aspect on a simple monochrome background display.

The original Gameboy has 4 shades of color and a resolution of 160x100. It's not of the 2nd generation, but is mentioned here for comparison of similar display and capability. CGA PC video cards have a mode with comparable amounts of colors. The Gameboy Color and Gameboy Advance had capabilities and specifications that ranged across multiple gaming console generations. Portable gaming consoles don't use the same specs by console generation, but they're described for comparison.

3rd generation
The main difference of these gaming consoles and the previous generation is an addition of a GPU. This is why this era of games had more detailed graphics including background sprites. Consoles of this generation are known for having 8bit CPU's.

This generation of gaming consoles have color palettes of 21, 54, 64, and 256. The amount of onscreen colors at once for these systems ranges from 16 to 32 colors.

NES, Sega Master System, Atari XEGS and Atari 7800 belong in this category. Sega Game Gear is basically a portable version of Sega Master System.

Sega Master System color palette as parrot in png format
Sega Master System color palette.

EGA video card color palette for PC as parrot in png format
EGA color palette.
As for computers with comparable gaming, the EGA video card would fit here. It has a color palette of 64, and onscreen colors at once of 16. EGA used dithering to compensate for higher resolutions, but after a certain point, it becomes dull and the color becomes saturated.

Atari ST, Amiga and Commodore 64 would fall in this category style of gaming. Amiga and Commodore 64 have a 16 color palette. The Atari ST can use a lesser or higher color palette, depending on the monitor's capabilities of being from monochrome or 4 colors at once to a higher resolution. Apple II gaming ranges from being comparable to 2nd to 3rd generation console gaming.

The resolution capabilities of an EGA card depended on the amount of memory it had. An EGA card was capable of resolutions for this era. An EGA graphics card for PC supports resolutions of: 320x200; 640x200/350.

Typical progressive resolutions of the 3rd and 4th console generation: 256x224(&240). The Atari had a resolution that included 320x200, which matched EGA and CGA resolutions.

4th generation
The 4th generation of gaming consoles mostly have 16-bit CPU's. Turbografx-16 (PC-Engine) has an 8-bit CPU, however, its GPU is 16-bit, which is comparable to that of other consoles of this era.

Color palettes of this generation with 16-bit GPU's typically range from: 512 to 32,768. Colors at once for these consoles is from 64 to 482. The TurboGrafx and Sega Genesis had a color palette of 512 colors, plus the Genesis has additional shades of these colors. Colors of the Sega Genesis seemed dark. Genesis has up to 75 on-screen colors, which shades multiply this number. TurboGrafx has more on-screen colors which aren't shades than the Genesis. When tinted and untinted colors are compared, then TurboGrafx-16 and Sega Genesis have a comparable amount of onscreen colors. The Super Nintendo had the most colors in palette and onscreen of these comparable consoles: its color palette is of 32,768. The Sega 32X, which isn't of the topic in this post, later surpasses the SNES' color palette: it's a 5th generation add-on to a 4th generation gaming console.

TurboGrafx-16 color palette as parrot in png format
TurboGrafx-16 color palette.

4th generation gaming consoles typically had a progressive resolution of: 256x224(&240) and 320x224(&240). Height resolutions for some consoles varied from 240 to between 239 and 242.

4th generation with advanced graphics rendering or higher GPU bit graphics
Sega Genesis and Super Nintendo had chips on select cartridges for 3D and pseudo 3D. 3D is the type of rendering for the display that is processed by the GPU and additional chips. Pseudo 3D has a 3D display, but it uses 2D rendering. Sonic and Knuckles was a lock-on cartridge that had pseudo 3D rendering for its bonus stages. Sega Genesis only had one full 3D game which used a 3D processing chip, which was Virtua Racing. Other proposed games for the Genesis with such a chip were cancelled, so became planned for the 32X instead. Super Nintendo had a few games with 3D rendering by use of advanced cartridge chips.

CD add-ons of the TurboGrafx and Sega Genesis allowed more gameplay, video animation and additional graphics rendering for those discs. The rendering of SegaCD was comparable to that of its 3D and rendering chip on Virtua Racing.

NeoGeo has a 24-bit GPU, a 16-bit CPU, and has a progressive resolution of 320×224. Phillips CDi, Commodore CDTV and Laser Active are gaming consoles that also had high capability GPU's for this generation.

Pioneer Laser Active was a gaming console. It also had add-on hardware so it could play Sega Genesis cartridges, Sega CD's, TurboGrafx cards and TurboGrafx CD's. There were two formats of Laser Disc games for it: one produced with Sega, and another one produced with NEC. These respective LD's could only be played with their corresponding console add-ons.

VGA is capable of displaying all of the graphics of these gaming eras, and more. Traditional DOS is limited to games that were up to 16-bit in CPU requirements. Later 16bit CPU DOS games were capable of higher end resolution and rendering with (S)VGA capabilities.

(Color palettes of parrot are in public domain, authored by Niemietz)
 
Last edited:
Gamepad/joystick cross compatibility
Interestingly, there was some cross compatibility of Atari's joystick port to joysticks of other gaming consoles of 2nd to 5th console generations and to computers. This included the Sega Master System, Sega Genesis, TI-99, Amiga CD32 and 8 bit PC's. This gaming port is a 9-pin D-Sub connection (perhaps a com or serial port), rather than a typical PC joystick port. Not all joysticks/gamepads which used this plug were compatible with PC's or other consoles.
220px-DE-9-Controller-Male-Connector.jpg
DE-9 D-Sub plug (socket end)

Gaming controllers that use the DA-15S D-sub connector are compatible to some PC's and to some consoles. S in the port name refers to socket, which is a female port. This port is commonly found on PCI sound-cards on PC's and on a few gaming consoles. Not all game controllers that fit this port are compatible with PC's and other consoles. This joystick port could also be used for MIDI input on the PC.
220px-Da-15_port.PNG
DA-15S D-Sub port

The DA-15S had more inputs for control signals than the DE-9 port. Even though many console controller plugs match port connections of DA-15S and DE-9, as a reminder, not all of the gamepads/joysticks that fit are compatible with other consoles and to PC's. Do your research before plugging in a game controller to a matching gamepad port.

Also, the Laser Active console was compatible with Genesis and TurboGrafx controllers, depending on which console component was connected.

Video
For resolutions, progressive display modes and common VGA resolutions will be described.

Widths were more standardized across monitor and TV resolutions. The most common standard width of the 3rd generation of gaming was 256. A width resolution of 320 was common across 3rd, 4th and 5th generations of gaming. The 5th generation of gaming had more variations of standard width resolution. 384, 565, 640 and 720 were other widths of 4th and 5th generation console gaming. Width resolutions of 256, 320, 384, 565 and 640 are multiples of 64. Higher width resolutions, which are common standards, don't go by multiples of 64.

Heights had variations to match televisions and monitors of different regional standards. VGA uses 240 as a common standard height resolution. 224 (which is a multiple of 32) was a common height of resolution for retro consoles on specific regional TV's.

256x240 and 320x240 are standard VGA resolution increments, which the widths match common retro consoles of the 3rd, 4th and 5th generations, and the heights closely match the variations. 384 is another common width of both VGA resolutions and of gaming consoles.

For comparison, the common console gaming and VGA monitor resolution of 320x240 is half of the width and height resolution of standard definition TV of 640x480. These are both aspect ratios of 4:3. About attempting to go lower in resolution with the same ratio may not be feasible with a VGA card. 256 is the lowest horizontal resolution available with a high refresh rate for a VGA card in graphics mode. 200 is the lowest vertical resolution available for a VGA card in graphics mode.

Other common resolutions were those of CGA or EGA resolutions of the retro gaming era. Some games matched resolutions of typical EGA and CGA hardware. Arcade games or and before the early 90's used CGA and EGA monitors. Those arcade cabinents may have had better graphics processing hardware to get more out of those monitors than those of PC's of the same time. Many games are said to be of CGA, but games more than basic 16 colors may actually be EGA. CGA and EGA have the same type of connector, so it's possible that people mistake one for the other.
220px-9_pin_d-sub_connector_male_closeup.jpg
EGA/CGA connector attaches to DE-9S.

Dithering can make a lower resolution monitor show a better image, however, in pictures saturated with high resolution color, it can alternatively make the image look dull. There are modes that can be selected on EGA/CGA and VGA outputs.

300px-SVGA_port.jpg
DE-15S port (for comparison to EGA port)
There are VGA to composite and s-video cables, however, they may require the VGA card to be capable of outputting the correct video signal to the VGA port.
 
5th generation console gaming and on to modern gaming
Most gaming consoles of the 5th generation era are 32bit CPU's, while they may have higher bus processors widths. Nintendo64 is an exception for mainstream consoles which has a 64bit CPU. Graphics hardware of gaming consoles for the 5th generation varies, and a few 32bit CPU consoles may have GPU processors of above 32bit.

Later games of 16bit CPU's had some resemblance to graphics of 32bit CPU games. That had to do with rendering and other capabilities of the graphics card. For the 5th generation of gaming, there's obviously an improvement in resolution, capabilities and other gaming metrics over the previous generation.

32bit CPU retro gaming
5th generation gaming consoles with 32bit CPU's: 3DO Interactive Multiplayer, Atari Jaguar /CD, Sega Saturn, Playstation, 32X (Sega). A few 32bit CPU consoles of the 5th generation era had multiple or combined GPU processors. While the CPU's of these consoles were 32bit, some may have had bus sizes of 64bit, in part to having multiple CPU processors.

Common resolution in previous era, but at least 1 for this era: 256x240(-220)
Most common resolution: 320x240
Common (progressive) resolution widths: 360; 384; 640; 720

288 and 240 are common heights, though this generation of console gaming had more variances in height than previous console generations.

32bit DOS
Public Domain Operating System (PDOS; Public DOS) has a 32bit version, which is one of its kind for DOS. It's intended for programs made for Windows in 32bit, while at the moment only specifies compatibility with Windows 95, which that OS may contain MSDOS bits. MsDOS and other DOS clones only work on up to 16bit. PDOS can run on emulators/bochs. Having a specialized DOS for playing 32bit Windows applications is important for retro gaming purposes such as: on 32bit CPU architecture, and without needing a window manager. Graphics cards with capabilities higher than 32bit and with increased RAM amounts can be used.

64bit CPU and modern gaming
5th generation, 64bit gaming console(s): Nintendo 64
Resolutions: 320x240; 720x288&576. (Heights of 288 and 576 are multiples of 64.)

Console gaming beyond the 5th generation typically used VESA standards for monitor resolutions. Standard TV resolution is of 640x480, many widths and heights of retro console gaming have specifications based on these numbers.

Advanced gaming up to modern gaming on PC's depends a lot on the graphics card. For comparisons, even after the 4th generation, there's a noticeable difference in colors, and onscreen precision of graphics between gaming generations or more specifically of the GPU capabilities.
 
This gaming port is a 9-pin D-Sub connection (perhaps a com or serial port), rather than a typical PC joystick port.
Not serial. Just a simple pin that's pulled up to 5V with a (micro)switch. 4 pins for the direction (left, right, up, down), 1 pin for the firebutton.


The NES (and I presume the SNES too) did have a serial connection. The joystick had a simple bit shifter that pushed the bits out with a clock signal coming from the NES.

 
It's not the parallel port. It looks like the com port.

I'm still trying to figure out the Atari connection. It may need further depth by others who are really interested in it, or who have some hardware around.

When I did have old hardware at different times in the past, there's a few things I remember.

On a really old 386 computer, I did use a joystick that was an Atari console like one. It may have actually been on an Atari port.

Moving on later. When I had a Sega Genesis, I did actually compare the gamepad connector to the com port on the computer. The shells were the same, and the pins were in the same place. I may have plugged the Sega Genesis controller in to a PC socket with the power turned off. However, the fit wasn't deep or snug that way. In otherwords, the gamepad connection had depth, while (I think it was) the com port on the PC didn't have the depth for that controller to fit snugly.

Once, someone did let me borrow a Sega Master System for a few days, and I didn't think to try the controllers of the different Sega's on the different Sega's. I also wish I knew then, that there was a Genesis adapter to play Master System games, but I didn't even know about that system, until someone let me borrow theirs.

I wasn't sure it could be used this way, and I didn't want to damage anything then, when I had to go by was the look of the connection. There wasn't the Internet availability or this kind of information lying around then, the way it is today. The com port on a PC was used for various hardware. Also, if it could have worked, old computers always needed drivers, even different ones for the basic mouse. Then, some didn't even use the PS connector.

I had a TI-99/4A around during the same time as I had the Genesis, but I don't remember if I tried the Sega Genesis gamepad on it, or at least the fit of connection. I may not have had the TI plugged in at all during that time, and I may not have looked at their connections. From looking at online pictures, there was an adapter from a TI to other controllers, which, one connection looked like of that of a Genesis gamepad, and the other looked as a com port.

Maybe an adapter from a PC COM port to an Atari like port? (One that resembles the one for a TI to an Atari gamepad) There's adapters for nearly everything.

Edit: SNES's game port may have been proprietary. Their NES game port may have been too.
 
I'm still trying to figure out the Atari connection.
It was originally introduced on the Atari 2600 in 1977 and then used on the Atari 400 and 800 in 1979. It went cross-platform with the Commodore VIC-20 of 1981, and was then used on many following machines from both companies, as well as a growing list of 3rd party machines like the MSX platform and various Sega consoles.

Atari was the first that developed and used that port on their console devices. Other companies like Commodore followed suit because it meant there was already a whole market with joysticks that could be used. So it made sense to have their joystick port be compatible with the Atari joysticks.

When I had a Sega Genesis, I did actually compare the gamepad connector to the com port on the computer.
The Sega Genesis used a multiplexer chip inside the joystick. https://www.arcade-projects.com/threads/sega-genesis-controller-to-jamma.201/

The biggest difference between the 15 pin PC "game" port and joystick ports from various console and home computers was that the PC joystick port primarily used analog signals, the joystick's position was read by reading two analog signals from potentiometers. That gave a voltage between 0 and 5 to indicate how much the joystick was moved. Most of the Atari (-like) joysticks were digital, only two settings, on or off. Some, like the NES, used a crude serial bit shifter to read the bits.
 
I get that part, and that's why it's called an Atari Joystick port.

I'm trying to figure out the Atari port and gamecontrollers with respect to a PC. How they could work together.

IIRC, the Sega Genesis controller had the same shell size and pins in similar places as a PC com port. The size of depth wasn't the same. I fit them together before, and the gamepad connector partially hung out halfway of the PC. I didn't try it powered on, bc I didn't want to damage anything.

I'm referring to the 9 pin port. Not the 15 pin joystick/midi one of soundcards. I've read there was compatibility with the soundcard joystick/midi port to those of other game controllers, but those are of consoles I'm unfamiliar with.
 
It's not the parallel port. It looks like the com port.
What it "looks like" really isn't relevant. It works with a few TTL-style data lines, so if it's "compatible" to anything PC, that would be a parallel-port, and ... behold ... there are adapters (and I even built one myself many years ago):

Yes, Linux contains a driver for these joysticks connected to the parallel port. Maybe some day, I'll try to port it to FreeBSD...
 
IIRC, the Sega Genesis controller had the same shell size and pins in similar places as a PC com port.
Old school serial port was a DB-25, at least during that period of time. The PC "game" port was a DA-15. The "newer" serial ports were actually DE-9, but are commonly, incorrectly, called DB-9. The Sega Genesis used some form of 9 pin D connector, but I can't find the exact specifications.

 
I've clarified, I'm trying to figure it out.

I've said, it looks like, and it may have been for a reason.

The parallel port is the wide one, that printers connect to. If it was made for other components, it had to have an adapter plug for them. DB-25 is that one, and not the shape in anyway of an Atari port or Com port. https://en.wikipedia.org/wiki/Parallel_port
225px-Parallel_computer_printer_port.jpg



The com port has the same amount of pins and shell size/shape as the Atari port. The com port is used for various hardware. It looks like this, https://en.wikipedia.org/wiki/Serial_port
255px-Serial_port_(9-pin).jpg
 
Uhm, what? Shape of a connector is not relevant (and you can always "fix" that with "dumb" adapters), relevant is how the electronics work.

And just for completeness: the 9-pin serial connector has genders switched compared to the 9-pin multisystem/atari joystick connector.

Btw, minor nitpick:
Just a simple pin that's pulled up to 5V with a (micro)switch.
Although it doesn't matter for the construction of such a joystick at all (it just connects 5 lines via switches to some common line), I *think* the typical design for the inputs was the other way around (they had pullups connecting them to +5, and the switches of the joystick pulled them down to GND).
 
The parallel port was usually connected to a PIO (Parallel I/O) chip. In a way those were what we would nowadays call GPIO pins. Because they're essentially GPIO pins you could set them as inputs too, not just as output (for a printer). Because most of the Atari(-like) joysticks were digital you could make a simple converter that connected the right pins from a 9 pin Atari joystick to one of the IO pins of the parallel port. Then you just need a driver that sets the PIO chip in the right mode and reads the bits.

I *think* the typical design for the inputs was the other way around (they had pullups connecting them to +5, and the switches of the joystick pulled them down to GND).
C64 didn't have pullup resistors on the joystick ports. No pullup or pulldown resistors in the joystick either. So the only way to register a "1" on the CIA input pin is by pulling the signal to 5V. It did have some resistors in series though, to limit the current. But yeah, I probably would have designed it with pullup resistors internally and pulled the signal to ground.
 
C64 didn't have pullup resistors on the joystick ports. No pullup or pulldown resistors in the joystick either. So the only way to register a "1" on the CIA input pin is by pulling the signal to 5V. It did have some resistors in series though, to limit the current. But yeah, I probably would have designed it with pullup resistors internally and pulled the signal to ground.
Dug around a little, but they're pulled to ground (I actually still have a C64/Atari joystick). The "common" is connected to pin 8, which is GND. The CIA chip has both a passive and active pull up internally. Hence the lack of pull up resistors on the board itself.

Interesting titbit, the joystick on port 1 actually shared some signals from the keyboard matrix. So a stuck joystick also resulted in 'odd' keyboard characters being pressed.
 
Dug around a little, but they're pulled to ground (I actually still have a C64/Atari joystick). The "common" is connected to pin 8, which is GND. The CIA chip has both a passive and active pull up internally. Hence the lack of pull up resistors on the board itself.
I did the same, mostly because I'm sure (from programming experience) that the registers contain 0 bits for "active" signals and I'd be surprised if they were somehow inverted ;) – found the same info, CIA has optional internal pullups.

The opposite design would have been pretty insane. OTOH, it's insane already to expose these ports directly on connectors :cool:
 
The opposite design would have been pretty insane. OTOH, it's insane already to expose these ports directly on connectors
Yeah, very little buffering or protection. Probably also the reason why those CIA chips got blown up quite frequently.
 
Interesting titbit, the joystick on port 1 actually shared some signals from the keyboard matrix. So a stuck joystick also resulted in 'odd' keyboard characters being pressed.
Both are shared. port 1 shares the I/O lines with the matrix columns, port 2 with the rows.

The reason you see weird characters is a stupid kernal (sic) keyboard query routine completely ignoring the existence of the "control ports", that scans row-wise (so setting rows to output and the columns to input, thus input from joystick #1 is mixed in).

Programming that stuff a bit more cleverly, you can reduce the risk of that happening to an absolute minimum by just checking whether there *is* input without any matrix row selected, and if there is, skip scanning. I'm doing something like that in my own input routines ;)

But of course, that's yet another cost-saving-WTF of C64 design that these lines are shared.
 
Back
Top