CPCWiki forum

General Category => Games => Topic started by: STE86 on 22:11, 27 August 15

Title: Ikari Warriors loading screen
Post by: STE86 on 22:11, 27 August 15
Having been inspired by a youtube vid which stated that arguably the best 8bit version of the game had by far the worst loading screen, I did this over the last couple of days, in payback for using the amstrad GnG loading screen as the basis for the new c64 GnG arcade loader.

if you want to attach it to a tape/disk image feel free.

Steve

[attachimg=1]
Title: Re: Ikari Warriors loading screen
Post by: TotO on 22:21, 27 August 15
Great picture!  8)
By the way, the hanging gun strap look strange...
Title: Re: Ikari Warriors loading screen
Post by: Carnivius on 22:31, 27 August 15
Beautifully done.  I'm not even that into the game and I think this looks great.   Loving the metallic effect on the elite logo too.  :)
(http://www.cpcwiki.eu/forum/resource://jid1-xgtdawe3yyuebq-at-jetpack/data/download_off.png)
Title: Re: Ikari Warriors loading screen
Post by: ||C|-|E|| on 23:19, 27 August 15
This is actually a great job! I remember the original screen as particularly horrible! we should exchange it for this one in the DSK  :D
Title: Re: Ikari Warriors loading screen
Post by: Guy0me on 23:39, 27 August 15
Quote from: STE86 on 22:11, 27 August 15
Having been inspired by a youtube vid which stated that arguably the best 8bit version of the game had by far the worst loading screen, I did this over the last couple of days, in payback for using the amstrad GnG loading screen as the basis for the new c64 GnG arcade loader.
if you want to attach it to a tape/disk image feel free.

Steve
Beautiful !! we are waiting for the game with this in a dsk  ;D with french fries and a coke ..
Title: Re: Ikari Warriors loading screen
Post by: Morri on 23:50, 27 August 15
Nice! I've just been reading up on another Ikari screen by @darkgate here (http://www.cpcwiki.eu/forum/applications/victory-road-new-screen-beta/msg107707/#msg107707) in the last couple of days. Both great efforts as I know how long these artworks can take.
I really like the little additions of this one like the bunker in behind the bushes and metallic effect on the words.
Title: Re: Ikari Warriors loading screen
Post by: Gryzor on 18:45, 28 August 15
This is beauuuutiful!
Title: Re: Ikari Warriors loading screen
Post by: tastefulmrship on 19:10, 28 August 15
Well, as someone who has converted his fair share of STE's C64 screens to the CPC palette (for which I am eternally apologetic due to a complete lack of permission... ahem!), all I would do is change the CYAN (#10) to WHITE (#13) and the yellow edges of the word "WARRIORS" to the new WHITE (#13) colour.

Other than those personal touches (from someone with NO graphic or artistic talent at all), this screen just proves that the CPC screen layout and palette is FAR, FAR superior to the C64. (Except in regards to GREY shades!) Once again, an amazing pixellated masterpiece from the master of pixels!  10/10



EDIT:
In all seriousness, though, with the GHOST AND GOBLINS and COMMANDO reworks, these new arcade title screens are getting the proper pixellation they deserve!
Title: Re: Ikari Warriors loading screen
Post by: DARKGATE on 20:13, 28 August 15
 :o 8) Great work, please can you explain me the program wich you have used for made it?
Compliments!!!
Ah please made a version .cdt and .dsk with this screen, if possible someone made a version .cdt with standard loading  block  with speed write 1 and 0  ;D .
Victory Road screen and still incomplete hope of made a good work, also if don't think of to arrive to this quality. ;)
Title: Re: Ikari Warriors loading screen
Post by: STE86 on 03:19, 29 August 15
the image was created in photoshop CS2 with all the antialiasing turned off.

using 160x200 res with 2:1 pixel aspect ratio turned on. and an amstrad full palette loaded.

I do c64 art in the same manner using a different palette but in the c64 case I have to use some photoshop scripting software to check for attribute limitations.

Steve
Title: Re: Ikari Warriors loading screen
Post by: DARKGATE on 07:48, 29 August 15
 :( PHOTOHOP CS2 i have only photoshop 6 my computer is very old, i use many photoshop how you made for made the same palette of amstrad? work with photoshop can help me for a fast and more accurate work.
Thank you Steve.
Title: Re: Ikari Warriors loading screen
Post by: Carnivius on 08:15, 29 August 15
Quote from: DARKGATE on 07:48, 29 August 15
:( PHOTOHOP CS2 i have only photoshop 6 my computer is very old, i use many photoshop how you made for made the same palette of amstrad? work with photoshop can help me for a fast and more accurate work.
Thank you Steve.

You don't need the latest graphics software for CPC pixelling, silly.   I use Paint Shop Pro 7 most of the time which is about 15 years old (but thankfully still works without issue on modern Windows) because it does all I want out of a graphics program and it's fast and doesn't use much memory (versions after that got a bit too Photoshoppy for my tastes). 
(http://www.cpcwiki.eu/forum/resource://jid1-xgtdawe3yyuebq-at-jetpack/data/download_off.png)
Title: Re: Ikari Warriors loading screen
Post by: robcfg on 09:00, 29 August 15
I do use GIMP with custom aspect ratio.

Here's a loading screen I did for a Dragon 32 game:
Title: Re: Ikari Warriors loading screen
Post by: VincentGR on 11:37, 29 August 15
One of the top 5 cpc games for me.
This artwork is awesome.
Title: Re: Ikari Warriors loading screen
Post by: STE86 on 12:17, 29 August 15
Photoshop CS2 isnt the latest version by any means, its 10 years old and can be downloaded legally for FREE here (make a note of the serial number in the publisher details)

Adobe Photoshop CS2 Download - TechSpot (http://www.techspot.com/downloads/3689-adobe-photoshop-cs2.html)

The PC version will run on all windows quite happily AFAIK I have used it on XP and 7. the Mac version only runs on older OS's

As the post above states Gimp will also do 2:1 aspect ratio, layers and is also free.

Pretty much any app that can do 2:1 fat pixel mode, can import palettes and has "layers" is perfect for 8 bit as long as you can turn off all the modern "help" it offers

I opt for photoshop because I am familiar with it as I use it for the "day job" :)

Love the Buzzard Bait screen. remember the game well. I had a dragon for 2 years '83-85 before defecting to the c64. A good mate of mine used to program Dragon games when I first met him. Dave Gibbons. We went on to do ST and Amiga stuff together.
Title: Re: Ikari Warriors loading screen
Post by: Puresox on 14:18, 29 August 15
Not the right thread this , so if anyone has a quick answer so not to distort the thread too much. In relation to the Dragon and it being very similar to the CoCo , for what reason is it not compatible with the similar hardware? It seems like it would have made better sense to be compatible? Or was it part of the condition between the two companies?
Title: Re: Ikari Warriors loading screen
Post by: DARKGATE on 16:26, 29 August 15
 ;D victory road screen is near to complete, look the thread, thank you.
victory road new screen beta (http://www.cpcwiki.eu/forum/applications/victory-road-new-screen-beta/msg108089/#new)
Title: Re: Ikari Warriors loading screen
Post by: alex76gr on 16:42, 29 August 15
Excellent job.
It looks fantastic. :)
Thank you!
Title: Re: Ikari Warriors loading screen
Post by: STE86 on 16:45, 29 August 15
Quote from: Puresox on 14:18, 29 August 15
Not the right thread this , so if anyone has a quick answer so not to distort the thread too much. In relation to the Dragon and it being very similar to the CoCo , for what reason is it not compatible with the similar hardware? It seems like it would have made better sense to be compatible? Or was it part of the condition between the two companies?

it was too a greater degree compatible with the coco 1, requiring only minor tweaks to get sw running between the two. 90% of the best dragon games were licensed coco ones. problem with the coco compatibility is that there were 3 versions of it :)

Some hardware I know ran because I remember plugging Tandy coco carts (some invaders game and "polaris") into my dragon (the foolishness of youth :) ) and they both worked and didnt blow the machine up...
Title: Re: Ikari Warriors loading screen
Post by: Devilmarkus on 16:58, 29 August 15
Quote from: STE86 on 22:11, 27 August 15
Having been inspired by a youtube vid which stated that arguably the best 8bit version of the game had by far the worst loading screen, I did this over the last couple of days, in payback for using the amstrad GnG loading screen as the basis for the new c64 GnG arcade loader.

if you want to attach it to a tape/disk image feel free.

Steve

[attachimg=1]

Made a DSK of it...
Hope you like it!
Title: Re: Ikari Warriors loading screen
Post by: DARKGATE on 17:09, 29 August 15
Thank you DEVILMARKUS, when you can please made a .cdt version (Classical standard loader) speed write 1 and 0   :D i love classical loader.
Title: Re: Ikari Warriors loading screen
Post by: Devilmarkus on 17:25, 29 August 15
Here you go...

Title: Re: Ikari Warriors loading screen
Post by: CECPC on 17:39, 29 August 15
¡¡Turbo!!


Title: Re: Ikari Warriors loading screen
Post by: Gryzor on 18:05, 29 August 15
Loading this right now. Oh, the sweet screeching sounds...
Title: Re: Ikari Warriors loading screen
Post by: CECPC on 18:45, 29 August 15
I have made a 2 hours code to convert a PNG of 160x200 resolution into CPC hex data (16 KBytes) and the colors of the palette for INK.

I have paste the screen hex data into WinAPE data to a fast transfer.

It could be useful next time.


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace PNG2CPC
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private byte getNearCPCOneColor(byte one)
        {
            // En el CPC original hay 3 niveles de luminosidad por cada canal de color.
            // Canal apagado, canal a liminosidad intermedia, y canal a liminosidad total.
            // 3 canales (RGB=Red Green Blue), en tres posiciones diferentes = 3^3= 27 colores
            // Los niveles son: 0, 0x80 y 0xFF. Yo tomo como referencia de proximidad los intermedios
            // <=0x40 = 0, >0x40-<0xC0 = 0x80 >=0xC0 = 0xFF
            if (one <= 0x40) return 0;
            if (one < 0xC0) return 0x80;
            return 0xFF;
        }

        private Color getNearCPCColor(Color rgb)
        {
            byte r = getNearCPCOneColor(rgb.R);
            byte g = getNearCPCOneColor(rgb.G);
            byte b = getNearCPCOneColor(rgb.B);
            return Color.FromArgb(0xff, r, g, b);
        }

        byte[] bufferScreen = null;
        byte[] byteCpcPallete = new byte[16];

        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Filter = "PNG Files|*.png";
            if (ofd.ShowDialog() != DialogResult.OK) return;
            Bitmap b = new Bitmap(ofd.FileName);
            List<Color> cpcColorImg = new List<Color>();
            for (int w = 0; w < b.Width; w++)
            {
                for (int h = 0; h < b.Height; h++)
                {
                    Color c = b.GetPixel(w, h);
                    Color cpcColor = getNearCPCColor(c);
                    if (!cpcColorImg.Contains(cpcColor))
                    {
                        cpcColorImg.Add(cpcColor);
                    }
                }
            }
            if (cpcColorImg.Count > 16)
            {
                MessageBox.Show("The image has " + cpcColorImg.Count.ToString() + " colors. It can not be converted.");
                return;
            }
            cpcColorImg.Sort(delegate(Color p1, Color p2)
                {
                    if (p1.GetBrightness() < p2.GetBrightness()) return -1;
                    if (p1.GetBrightness() > p2.GetBrightness()) return 1;
                    return 0;
                }
            );
            //Como excepción, quieron que el PEN 1 tenga un color con mucho brillo.
            int posMax = cpcColorImg.Count - 1;
            Color cMax = cpcColorImg[posMax];
            Color c1 = cpcColorImg[1];
            cpcColorImg[1]=cMax;
            cpcColorImg[posMax] = c1;

            Dictionary<int, byte> cpcPallete = new Dictionary<int, byte>();
            Dictionary<Color, int> colorToPen = new Dictionary<Color, int>();
            cpcColorImg.ForEach(delegate(Color c)
            {
                int pen = cpcPallete.Count;
                byte cpcColorPallete = getCpcColorPallete(c);
                colorToPen.Add(c, pen);
                cpcPallete.Add(pen, cpcColorPallete);
                byteCpcPallete[pen] = cpcColorPallete;
            });
            // Ahora toca pasar de gráfico PNG a bytes para pantalla CPC
            // Recorremos 8 las bandas del CPC, para alinearlas a memoria
            // Como modo 0, leemos de 2 en 2 pixels, y lo convertimos a un byte
            int nlineas = b.Height >> 3;
            int columns = b.Width >> 1;

            bufferScreen=new byte[0x4000];

            int bufferPos = 0;
            for (int pas = 0; pas < 8; pas++)
            {
                bufferPos = pas * 0x800;
                for (int linea = 0; linea < nlineas; linea++)
                {
                    for (int column=0; column < columns; column++)
                    {
                        int lineaReal = linea * 8 + pas;
                        int columnPixe = column * 2;
                        Color nearColor1 = getNearCPCColor(b.GetPixel(columnPixe, lineaReal));
                        Color nearColor2 = getNearCPCColor(b.GetPixel(columnPixe+1, lineaReal));
                        int penPixel1 = colorToPen[nearColor1];
                        int penPixel2 = colorToPen[nearColor2];
                        byte byteMode0 = (byte)(
                            getBitPerPower(penPixel1, 0, 7) ^
                            getBitPerPower(penPixel2, 0, 6) ^
                            getBitPerPower(penPixel1, 2, 5) ^
                            getBitPerPower(penPixel2, 2, 4) ^
                            getBitPerPower(penPixel1, 1, 3) ^
                            getBitPerPower(penPixel2, 1, 2) ^
                            getBitPerPower(penPixel1, 3, 1) ^
                            getBitPerPower(penPixel2, 3, 0));
                        bufferScreen[bufferPos++] = byteMode0;
                    }
                }
            }

        }

        private byte getBitPerPower(int penPixel2, byte bitOrig, byte bitDest)
        {
            bool pixelOn = (penPixel2 & (1 << bitOrig)) != 0;
            return (byte)(pixelOn ? 1 << bitDest : 0);
        }

        private byte getCpcOneColorPalleteSub(byte c)
        {
            byte c2 = getNearCPCOneColor(c);
            if (c2 == 0) return 0;
            if (c2 == 0x80) return 1;
            return 2;

        }

        private byte getCpcColorPallete(Color c)
        {
            byte r = getCpcOneColorPalleteSub(c.R);
            byte g = getCpcOneColorPalleteSub(c.G);
            byte b = getCpcOneColorPalleteSub(c.B);
            return (byte)(b + r * 3 + g * 9);
        }

        private int getIntColor(Color cpc)
        {
            int intColor = cpc.R * 0x10000 + cpc.G * 0x100 + cpc.B;
            return intColor;
        }

        private void button3_Click(object sender, EventArgs e)
        {
            if (bufferScreen == null)
            {
                MessageBox.Show("The screen has not been readed yet");
                return;
            }
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < bufferScreen.Length; i++)
            {
                if (i > 0) sb.Append(' ');
                sb.Append(bufferScreen[i].ToString("X2"));
            }
            Clipboard.SetText(sb.ToString());
            MessageBox.Show("The hex data of the screen has been copied into clipboard");
        }

        private void button2_Click(object sender, EventArgs e)
        {
            if (bufferScreen == null)
            {
                MessageBox.Show("The screen has not been readed yet");
                return;
            }
            StringBuilder sb = new StringBuilder();
            sb.Append("DB ");
            for (int i = 0; i < byteCpcPallete.Length; i++)
            {
                if (i > 0) sb.Append(',');
                sb.Append(byteCpcPallete[i].ToString());
            }
            Clipboard.SetText(sb.ToString());
            MessageBox.Show("Assembler of the palette copy to clipboard");
        }
    }
}

Title: Re: Ikari Warriors loading screen
Post by: Devilmarkus on 19:14, 29 August 15
I simply transferred the PNG using JavaCPC Paint  :-* 8)
Title: Re: Ikari Warriors loading screen
Post by: CECPC on 20:08, 29 August 15
Quote from: Devilmarkus on 19:14, 29 August 15
I simply transferred the PNG using JavaCPC Paint  :-* 8)
I didn't know about this!

I couldn't compete with this
JavaCPC Paint image processing demonstration - YouTube (https://www.youtube.com/watch?v=9I1fdpej2SM)
Title: Re: Ikari Warriors loading screen
Post by: Devilmarkus on 20:20, 29 August 15
Well, my Routine to convert PNG/JPG etc... to CPC is not very different to yours... ;)
(The basics)
Title: Re: Ikari Warriors loading screen
Post by: Neil79 on 20:26, 29 August 15
 8)
Title: Re: Ikari Warriors loading screen
Post by: Ast on 15:23, 30 August 15
Quote from: STE86 on 22:11, 27 August 15
Having been inspired by a youtube vid which stated that arguably the best 8bit version of the game had by far the worst loading screen, I did this over the last couple of days, in payback for using the amstrad GnG loading screen as the basis for the new c64 GnG arcade loader.

if you want to attach it to a tape/disk image feel free.

Steve

[attachimg=1]
Fantastic Steve. Are you the STE who made a lot of pictures for elite's games?
Why don't you do fullscreen pictures?
Title: Re: Ikari Warriors loading screen
Post by: STE86 on 16:08, 30 August 15
no That would be Steve Pickford, amstrad and speccy artist.

you can spot which is his his art because he does STE with a central large T and gaps in the other letters so if you look at it, it could be read as JTC. see the amstrad ghosts and goblins loader.

I am more usually found doing c64 art (since 1986) so usually you will see my sig as STE'86
Powered by SMFPacks Menu Editor Mod