Jump to content
IGNORED

DrunkWitch [Completed]


karri

Recommended Posts

I have been away for a while. Sailing the seven seas as a deckhand on this beauty.

IMG_20220616_115920.thumb.jpg.285257a3db114a301175da66c850dbc1.jpg

But now I am on course again - trying to learn how to draw moving stuff on the 7800.

We just completed the LynXjam 2022. And I hope to port my DrunkWitch entry to the 7800 before Xmas. It is just a parody entry of social networking. That was the theme of the jam.

 

My sprite sheet for the 7800 port looks like this right now.

7800dw.png.743550d5cae71c489fd66cd1dafcba0d.png

Who knows if I can get it together in less than a week...

 

  • Like 18
Link to comment
Share on other sites

I realized that in order to get this done at all I just go for 160A graphics. This loses a lot of details in the main character. But it will be much easier to do for me.

7800dw.png.0072d8c177bc0e1ff82d9f42e278061a.png

I also decided to skip the font engine and go with pre-defined words. Here you see what components you can use to mix the drinks with. Whenever you manage to get a known drink you will attract a follower to your DrunkWitch bartender blog. The current game contains 16 named drinks thanks to @gambler172 who again helped me to meet my goals.
The goal of the game is to get as many likes as possible. But you cannot get more likes without attracting followers as well.

 

 

All the nice stuff like
- trolls insulting you
- bad drink reactions
- feeling miserable as you get no likes
will be added to the game later (for a small monthly subscription fee).

 

So, what do you need to do to get this miserable experience?

 

Just download the game and learn the controls:
 

### Storyline ###

You are trying to show your talents as a bartender by blogging your own
DrunkWitch channel. Unfortunately your audience is all the weirdos and
trolls found on the net. Try to survive by mixing quality drinks to
attract followers.

### Controls ###

* UP/DOWN/LEFT/RIGHT - browse flasks
* FIRE - pour into cup
* FIRE2 or SELECT - drink
 

### The team behind it all ###

* Karri Kaksonen
* Walter Lauer

 

Edit:
After flipping the graphics and scaling them to 32 pixels high I end up having something usable for the compiler.

7800dw1.thumb.png.b24773387a2c1f1d75e1c20b5d637565.png

7800dw2.thumb.png.9a61b45f4cfa16b1a9c039dd6cae4e26.png

There will also be 3 different palettes in use:

- Furniture and room plus mirror palette
- Bartender palette (Elvira look with black hair and pale skin)
- Red table cloth and drinks palette

 

In Tiled I put together the playing area:

dwscene.png.b8a932e86e8528d5a84600bfcacd4254.png dwscene2.png.58661e0cce1614b33d818063452f3ec3.png

  • Like 9
Link to comment
Share on other sites

The Lynx was only 160x102, right? I'm hoping this will be familiar territory because of that. But I do realize that the aspect ratios are different, but not too far away from each other (I believe the Lynx is 1.57:1 and 7800 is 1.74:1).

One way or another, I'm excited to see your work on the system and am happy to see what looks to be a fun game with great IP (Elvira!!). And I am thoroughly jealous of your sea faring adventures! More pics!!!

Edited by saxmeister
  • Like 1
Link to comment
Share on other sites

4 minutes ago, saxmeister said:

The Lynx was only 160x102, right? I'm hoping this will be familiar territory because of that. But I do realize that the aspect ratios are different, but not too far away from each other (I believe the Lynx is 1.57:1 and 7800 is 1.74:1).

One way or another, I'm excited to see your work on the system and am happy to see what looks to be a fun game with great IP (Elvira!!). And I am thoroughly jealous of your sea faring adventures! More pics!!!

I did understand the aspect ratio problem. That is why I scale my tiles 16x16 to 16x32 as seen in the screenshots above.

 

Here are a few pictures of the life onboard as a deckhand. We will be sailing in Europe next summer as well. The planned trip to China got postponed to 2024 as the Covid restrictions would have made it impossible to have visitors in asian harbours.

 

If you want to apply for a position check www.gotheborg.se

 

IMG_20220618_100338.thumb.jpg.71c2fc8817a1f44feaea8ed0fe4def16.jpgIMG_20220621_112154.thumb.jpg.fcab014dc6f7c857c769b47c90641cfd.jpgIMG_20220621_220813.thumb.jpg.b550724280554f16fe92b91baf4f9f1d.jpgIMG_20220621_220830.thumb.jpg.97a6f7f814647a8ea52f755efc9a255f.jpgIMG_20220622_113856.thumb.jpg.e8d0109daddf5e0b6a193d8a867abcc8.jpgIMG_20220625_164502.thumb.jpg.723747fbac2d843052c8ee8f2c372bfa.jpg

 

  • Like 5
Link to comment
Share on other sites

One question about music. I know about Furnace tracker. But I wonder what tool would be the easiest for turning a melody on a note sheet to the 7800.

I would like to encode a small tune by Duke Ellington called "Don't get around much anymore" for the background. Perhaps a Pokey would be a common target. I just need two notes at a time - no percussions.

  • Like 1
Link to comment
Share on other sites

I have a pretty fundamental problem that I do not understand.

FlaskProblem.thumb.png.3bcb31c9d8ffdedd2b7bfc60cc6ccb0a.png

I can move the flask right or left with the zone's hpos field. But how do I fine tune the vertical position of a bitmap?

 

Do I need to have a separate DLL entry for every scanline?
Is this something the "holey" setting could be used for?

Is there a way to mix tiles with freely positioning graphics somehow?

After reading the docs once more I am afraid that I have to replicate all my zone definitions to every scan line. So it will take lots of processing to animate tiles.

 

Edit:

I assume that I can live with creating my flask tiles as 16 pixel high entities and doing the animation left/right only.

 

Edit2:

I found a workaround by packing two flasks in one tile. But my question is still relevant.

Better.thumb.png.e13a86ad2bb4ccf698028be626e75c04.png

Link to comment
Share on other sites

Ouch. I already hit the DLL size limit as my graphics start disappearing at the last zones.

OutOfDLL.thumb.png.95656eb0c702980d1ee1dfb65ec67cd1.png

 

If I add the last column of bottles the cup will be cut in half.

 

Does the 512 bytes DisplayList size limit describe a single scanline? Or is it the entire DLL + zones data structure?

 

With all these surprises I am not going to be ready with the code today. Sigh...

  • Like 1
Link to comment
Share on other sites

So now I found out what is wrong with my build environment. It appears that all global variables that should get copied to RAM are still remaining in ROM. I really have to take a closer look at this at some time in the future. For this project I just delete all globals and work with the stack.

 

So any cc65 users - take notice...

  • Like 1
Link to comment
Share on other sites

20 hours ago, karri said:

Is this something the "holey" setting could be used for?

 

Yes, this is exactly what holey DMA is for. It's explained in the Display List List section of the Software Guide.

 

8 hours ago, karri said:

Ouch. I already hit the DLL size limit as my graphics start disappearing at the last zones.

 

I am confident that the 7800 can display the screen you want. What's your zone height(s) and what DMA modes are you using for each object?

Link to comment
Share on other sites

Thanks! I need to study the holey DMA then.

 

My "CHAR_HEIGHT" is 16. All my tiles are 16 pixels wide. And I treat the tiles in pairs making the height 32 pixels.

The palwidth field in the zone description that may contain the DMA mode is: ((2 & 7) << 5) | ((-4) & 31)

The first 2 is the palette. But I don't recall what the other bits are for.

In the main dll structure I only set the bit $80 on the start of screen drawing when it reaches the visible area and after the last visible scanline. No other holey bits are set.

 

I may have some weird bugs related to ROM/RAM addressing issues then.

Link to comment
Share on other sites

I tried running the developer mode on the emulator to see if DMA is exhausted. As the result is all yellow I assume that it gets exhausted by trying to draw too much. Is this correct? No graphics after half of the bartender is displayed.

DMAout.thumb.png.1deaa7e7e40bde6930a21017a3236321.png

 

I just compiled it without the 20 flasks and the result appers to be ok.

NoFlasks.thumb.png.b141d87dd3987af7c6f0b04dbd3d5ec4.png

Link to comment
Share on other sites

On 12/23/2022 at 6:53 PM, karri said:

So now I found out what is wrong with my build environment. It appears that all global variables that should get copied to RAM are still remaining in ROM. I really have to take a closer look at this at some time in the future. For this project I just delete all globals and work with the stack.

 

So any cc65 users - take notice...

It was just my config mistake. I assigned DATA to ROM area for my level segment.

  • Like 1
Link to comment
Share on other sites

57 minutes ago, gambler172 said:

Yes, take the 2nd with Ukulele 👍

Sure. Or should I tape one with my Nord Grand? It has a "slightly better" sound than a €45 ukulele.

 

I managed to compile the DrunkWitch with the new graphics and the TIA tune. But the tune keeps running at superfast speed. I have to read through the player code to see how the TIATracker author intended to run it. Or perhaps even ask @Kylearan who seems to be the original author.

 

Edit: I managed to fix my problems and I now have a cc65 compatible music player for TIAtracker music. Due to my extreme laziness I just concatenated all the stuff of the player into one file called tiaplayer.s

 

If you want/need to change the trackdata just delete my stuff and insert your own.

 

The first file is my TIATracker instrument used in this game:

SineLow.tti

The 2nd file is my song in TIATracker format:
karrika - DontGetAwayNowAnymore.ttt

The 3rd file is my tuned ca65 format file (modified from MADS):

tiaplayer.s

 

Note: I did not need to write any startup/interrupt code as cc65 uses interruptors.

  • Like 1
Link to comment
Share on other sites

Our small 7800 team @karri amd @gambler172 are happy to release DrunkWitch for all wannabe bartender bloggers.

 

DrunkWitch.a78

 

It uses TIA music only and it was pretty much tailored on a PAL system so the music runs a bit faster on NTSC.

 

The goal of the game is to attract followers and get likes. These things are what matters to bloggers.

Winning.thumb.png.3862be7fcc9e059f3a6ca76e9a00682d.png

 

Once you manage to make all 16 drinks you win the game and get the nice "End of shift!" message and can go to sleep.

 

Some of the drinks are quite famous like: Godfather or Screwdriver. But there is also others that could be less known like El Presidente.

Obviously you don't attract followers by making the same drink over and over again.

 

In the weeks to come I may use the application for experimenting with holey graphics and stuff. Who knows. But the "game" is considered COMPLETED.

  • Like 9
  • Thanks 1
Link to comment
Share on other sites

ZeroPage Homebrew is playing DrunkWitch on tomorrow's ZPH stream LIVE on Twitch, hope you can join us!

 

Games:

  • Elevator Agent (2022 Exclusive World Premiere | 2600) by John Champeau @johnnywc (Coding & Design), Nathan Strum @Nathan Strum (Art & Graphics), Pat Brady @Pat Brady (Music & Sounds) plus LIVE Video Interview with John Champeau
  • Lunar Patrol (2022 Exclusive World Premiere | 7800) by Oldstyle @OldStyle
  • DrunkWitch (Final Binary | 7800) by Karri Kaksonen @karri

 (WATCH AT 1080P60 FOR BEST QUALITY)

 

  • Like 7
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...