Samsung Galaxy S9 (Samsung SM-G960FZKD..
Samsung Galaxy J4 (Samsung SM-J400FZDD..
Samsung 7Kg Top Load Fully Automatic W..
Samsung RT37M5538S8/TL 345L Double Doo..
Samsung 7.5Kg Top Load Fully Automatic..
Samsung RT54K6558SL/TL 523 Litres 3S D..
Samsung Galaxy On Max SM-G615FZKUINS (..
Samsung 6.5Kg Semi Automatic Top Load ..
Samsung 6KG Top Load Fully Automatic W..
After the smartphone revolution and subsequent boom of smart devices, Samsung has become a name and brand to be reckoned with in the International market. The South Korean company is now the second largest information technology company, only behind Apple Inc. Known for its extensive range of smartphones, tablets, laptops and other electronic devices, Samsung is one of the most trusted brands by customers from around the world. Among the various gadgets manufactured by the multinational electronics company, mobile phones are given the primary focus and attention. Samsung has beaten quite a few phones in the market but there is one brand which still gives Samsung some tough competition and the name is none other than Nokia. Nokia often launches affordable Nokia Mobiles Combo Offers and is still on of the most preferred brands by customers. However, Samsung too has carved out a niche for itself in the market with its stunning offering.
Samsung releases a number of feature phones and smartphones than any other company in a year. Samsung new mobile phones come with the latest features and are available at affordable prices online. Some of these devices including the J series, On Series and S series of smartphones are exclusively launched online on shopping sites including Amazon, Flipkart and Snapdeal. Use Flipkart mobile offers to save on your mobile phones shopping online. Also, grab the latest discounts, cashback, and other exciting exchange offers. Check out the Samsung smartphone price list online along with other offers to find the devices that fit in your budget. In addition to mobile phones, Samsung also manufactures and sells tablets, computers, laptops, cameras, consumer appliances, memory cards, accessories and more.
Cashify Coupons:Rs 250 , CashKaro Cashback when you sell anything on Cashify. Plus Exclusive Discounts!
Please check Bigcmobiles site for Exchange Offers available.
Please check Hihonor site for Exchange Offers available.
Please check Saholic site for Exchange Offers available.
Please check Moskart site for Exchange Offers available.
Samsung Galaxy S8 and S8+ - The Galaxy S8 and S8+ are the latest beastly phones from Samsung. The South Korean manufacturer unveiled these phones in March 2017. With Infinity Display and Bixby Digital Assistant, the devices open up new world and possibilities.
Samsung Galaxy J7 Max - Samsung Galaxy J7 Max is the latest 4G smartphone from Samsung with amazing features and splendid performance. The device runs on an Octa-core processor with 4GB RAM and 32GB internal memory. There is a 5.7-inch full-HD display, 13MP rear and front camera, and 3300mAh battery.
Samsung Galaxy On Max - The Galaxy On Max from Samsung has a 5.7-inch full-HD display, 4GB RAM, and 32GB internal storage (expandable up to 256GB). The device runs on MediaTek MTK6757V Octa-core processor and has 13MP rear and front camera. The battery capacity is 3300mAh and other features include 4G LTE, dual SIM, and Bluetooth.
Samsung manufactures both feature phones and smartphones for users from around the world. The popularity of Samsung handheld devices is owed to the build quality and performance of these devices available at an affordable price point. You can view our exclusive Samsung Promo Code to avail extra Cashback on Smartphones.
Samsung Basic Phones: The basic phones from Samsung usually come with keypads and have the most basic configurations. Among the features phones from Samsung, the Guru series of phones is the most popular. They come with configurations including 2.4 to 2.8-inch QVGA displays, 0.3MP to the 2MP rear camera, 8GB internal memory (expandable to up to another 16GB/32GB using a microSD card) and 800mAh to 1200mAh battery. These phones from Samsung are available from under 1k to 3k. Check for Samsung mobile price list online to pick the latest feature phone at the best price. Alternatively, search for Samsung mobile price 5000 for feature-rich basic phones from Samsung at affordable prices. You can also look for smartphones from other brands in this price range. Check out Lava mobiles, Micromax and Intex for smartphones that are available on the budget of a basic phone.
Samsung Smartphones: Samsung smartphones have been known for long to set benchmarks for similar devices from other manufacturers. The Galaxy range of smartphones from the Korean maker has been the most successful for the company to date. Under the Galaxy, range is various series of devices including the premium S series, J series, A series and On series. Though Samsung smartphones come at nominal prices, you can make use of Samsung smartphone offers to get them at further reduced rates. If you are looking for a budget smartphone purchase, then check Samsung mobile under 10000 rupees to get your ideal device.
Among the top-selling devices from Samsung are budget and mid-range smartphones. The budget devices from Samsung are available under 10k and come with specifications and performance that match mid-range devices from other manufacturers. The best smartphones from Samsung in the budget segment include Galaxy On7, Galaxy J2, Galaxy On5 and Galaxy A3. Have a look at the Samsung mobile price in India to check the devices available for India by Samsung. Alternatively, you can also look for Samsung smartphone the cheapest devices on online shopping sites like Amazon, Flipkart and Snapdeal to get the best budget phone from Samsung. You can also use Amazon mobile coupons for more discount on your online shopping.
In the mid-range segment from 10k to 20k, Samsung has devices including the popular Galaxy J7, Galaxy J5 and Galaxy S5. Make use of Samsung latest mobile offers to get mid-range Samsung devices at affordable prices. You can do a search for Samsung smartphones under 15000 rupees to get good mid-range devices including Galaxy J7 and Galaxy J5 at online retailers like Flipkart and Snapdeal. Use discount offers and promo codes to bring down Samsung mobile price J7 and J5 devices. You can also check out the Samsung mobile price list in India and compare the prices of Samsung phones on price comparison sites before applying offer codes and coupons.
There is nothing more delightful than shopping online for products at discounted prices. The joy of striking a wonderful shopping deal is incomparable to anything. Make use of Samsung new mobile offers to get the latest Samsung smartphones at the best prices online. Grab discount coupons and codes to save more on the purchase of Samsung phones in the budget, mid-range and high-end segment. Promo codes and offers are also valid on Samsung new mobile launch devices and hence make use of them to save money on your online shopping. In addition to the various coupons and codes, you can shop during festive seasons to get amazing offers including EMI offers and flat discounts. Apple mobiles are available for huge discounts during the online shopping sale and hence you can make use of them to grab the best devices for the cheapest price.
Also, added to all the above discounts and offers are extra cashback offers when you shop through CashKaro. The leading cashback and coupon website in India offer big cashback on Samsung smartphones including S series, J series and On series phones. With rapidly advancing technology, Samsung is making new phones and launching them at an incredible pace at regular intervals. It's time to pick a "Next is What?" device from Samsung and live life uninterrupted.
Apart from mobiles, Samsung has ventured into other areas as well and has a good customer base. Other products popular by Samsung are air conditioners, televisions, laptops, refrigerators and similar large home appliances. What's great is that you can earn cashback on no matter what product you buy from Samsung via CashKaro. You can find the latest Samsung tv offers along with deals on home and kitchen appliances to bring home nothing but the best. Go ahead and splurge and let us help you save with nothing but the best deals on the internet.


text:
Jacqueline Salit
President of IndependentVoting.org
A political innovator and advocate for the rights of independent voters—now 40% of the American electorate—Jacqueline Salit has built the largest network of independent leaders and activists in the country. She is the President of IndependentVoting.org, the country's leading strategy and organizing center for independents, with chapters in 40 states. Since 2005 she has hosted a bi-annual national conference for independents. Salit managed Michael Bloomberg's three campaigns for New York City Mayor on the Independence Party (IP) line, playing a crucial role in delivering the IP's "margin of victory" vote in 2001, the exodus of 47% of African-American voters from the Democratic Party to support Bloomberg in 2005, and the historic 150,000 votes for Bloomberg's re-election on the IP line in 2009.
In 2011, Palgrave Macmillan selected Salit to write a book on the contemporary independent political movement in America. Independents Rising: Outsider Movements, Third Parties and the Struggle for a Post-Partisan America was released on August 7, 2012 and presents her firsthand account of this growing and influential voting bloc. Salit's political commentaries have appeared in: USA Today, Christian Science Monitor, The Huffington Post, New York Daily News, San Francisco Chronicle, Washington Times, Seattle Post-Intelligencer, Legal Times, Buffalo News, Union Leader, Albany Times Union, and New York Newsday. She's been featured commentator on CNN, MSNBC, CNBC, CBC, PBS, FOX and CSPAN. Salit is a regular contributor to the nationally syndicated radio program Fairness Radio and produced Talk/Talk with the late public philosopher Fred Newman. She is a native New Yorker who resides in Greenwich Village.
www.jackiesalit.com
Related Video Conversations
Completed: December 4, 2014
Reinvent Bipartisanship
Series: Reinvent America: Our Technology Foundation
Political polarization in the United States is not a Washington D.C. problem, it's an American people problem. Because it's a people problem, the ultimate solution lies not solely with the politicians in D.C., but with us as well.
Participants: Joan Blades, Jacob Hess, Jacqueline Salit, Rich Tafel, Debilyn Molineaux, Lawrence Chickering, Elisa Batista, Peter Leyden

redpajama_set_name: RedPajamaCommonCrawl


text:
country selection United States of America
Life at Continental
Sustainable Corporate Governance
Safely There
Compliance and Anticorruption Hotline
Fairlawn, OH
STEM Initiatives
Trends in the Automotive Industry
Our Strong Divisions
Avis Budget Group and Continental Expand Collaboration to Offer Connected, On-Demand, Keyless Experience
Strengthens Avis Budget Group's resolve to achieve full fleet connectivity
Expands secure and seamless vehicle access to more markets in the United States; introduces service in Europe
PARSIPPANY, N.J. and SAN JOSE, January 7, 2019 — Avis Budget Group, Inc. (NASDAQ: CAR) and Continental today announced that they have expanded their partnership. Under the enhanced collaboration, Avis Budget Group will boost its fleet of connected cars in the United States and Europe by equipping 50,000 vehicles with Continental's enhanced Key as a Service (KaaS) technology.
Continental's enhanced KaaS solution allows for two-way data communication between a vehicle and Avis Budget Group's cloud-based system and its Avis mobile app, which effectively "connects" the car. Connected vehicles empower Avis customers to manage their entire rental experience through the Avis mobile app. In addition, Continental's aftermarket solution also eliminates the need for physical car keys and enables Avis customers to use the Avis mobile app to unlock the car and start the engine. Until now, the KaaS solution only allowed for keyless entry and ignition and was only available in the greater Kansas City, Missouri area as part of Avis Budget Group's "Mobility Lab" which serves as a test bed for fully connected vehicles and operations.
"Continental's technology coupled with the Avis mobile app is another way that we are reinventing rental by making the overall customer journey more convenient, transparent, personalized and seamless," said Arthur Orduña, executive vice president and chief innovation officer, Avis Budget Group. "We're delighted to build upon the success of our KaaS pilot at more than 20 Avis locations in the Kansas City area, and provide customers in other markets and countries with mobility on demand where and when they need it. Now, we're another step closer to our goal of a fully connected fleet by the end of 2020."
"Avis Budget Group is showcasing the power of the Internet of Things by connecting cars to the cloud and consumer apps," said Helmut Matschi, member of the executive board at Continental. "Our KaaS solution highlights Continental's ability to quickly iterate a new product for shared mobility that is keyless, connected, and secure. We are excited to enable new use cases for Avis that will provide their customers with a magical experience."
Continental's aftermarket KaaS technology offers scalability across car manufacturers, vehicle models and regions and quicker time to market with no circuitry changes or modifications in the vehicle architecture. It includes services and hardware.
Avis Budget Group and Continental will showcase the offering during the Consumer Electronics Show in the North Hall of the Las Vegas Convention Center on January 8-11, 2019.
About Avis Budget Group
Avis Budget Group, Inc. is a leading global provider of mobility solutions, both through its Avis and Budget brands, which have more than 11,000 rental locations in approximately 180 countries around the world, and through its Zipcar brand, which is the world's leading car sharing network, with more than one million members. Avis Budget Group operates most of its car rental offices in North America, Europe and Australasia directly, and operates primarily through licensees in other parts of the world. Avis Budget Group has approximately 31,000 employees and is headquartered in Parsippany, N.J. More information is available at www.avisbudgetgroup.com.
About Continental
Continental develops pioneering technologies and services for sustainable and connected mobility of people and their goods. Founded in 1871, the technology company offers safe, efficient, intelligent and affordable solutions for vehicles, machines, traffic and transport. In 2017, Continental generated sales of €44 billion and currently employs more than 244,000 people in 61 countries.
Mary Arraf Sr. Manager, Communications NA Region One Continental Drive Auburn Hills, MI 48326, USA Phone: +1 (248) 393-5509 Cell: +1 (248) 766-9241 E-mail: mary.arraf@continental-corporation.com
Brianna Blust Communications & Marketing NA Region One Continental Drive Auburn Hills, MI 48326, USA Phone: +1 (248) 393-6492 Cell: +1 (248) 230-0143 E-mail: brianna.blust@continental.com
2020-01-03 Mobility Is the Heartbeat of Life: Continental at CES 2020
2019-12-19 Continental employees give back to community with "Conti Cares" initiatives during the holidays
2019-12-18 Continental Launches Smart City Mobility and Transportation Hub for Safer and Smarter Cities
2019-12-16 Continental Presents Holistic Human-Machine Interaction for Autonomous Vehicles
2019-12-13 Continental to Premier New Sensitive Sensing Multi-purpose Automated Parking Sensor at CES 2020
2019 CES Press Releases
Continental Invests in Virtual Development for Automated Driving and Collaborates with AAI
Through collaboration with Automotive Artificial Intelligence (AAI), Continental enhances its virtual development...
Continental's Vision for Seamless Mobility Combines Autonomous Shuttles and Delivery Robots
At CES 2019, Continental will demonstrate a seamless approach to goods delivery with the help of delivery robots...
Avis Budget Group will boost its fleet of connected cars in the United States and Europe by equipping 50,000...
Continental Develops Global 5G-Hybrid-V2X Solution and Wins First Series Project
Continental is developing a flexible 5G hybrid platform that allows both mobile network communication, and rapid...
Continental Showcases Innovations for Smarter and Safer Cities at CES 2019
Today half the world's population lives in cities; in three decades this number will grow by another 2.5 billion...
Safe, Convenient, Award-Winning: Continental Receives CES 2019 Innovation Award for Intelligent Door System
The technology company Continental is optimizing the relationship between safety and convenience.
Compliance- & Anti-Corruption Hotline
We use cookies to give you the best experience on our website. If you want to obtain more information, change your cookie settings or refuse cookies, please click here.


Dr. Noah Herbert is the owner and clinic director at Synergy Spine and Injury Center. He attended and received his doctorate degree from the highly acclaimed Palmer College of Chiropractic. Dr. Herbert is credentialed in MRI Spine Interpretation, Spinal Biomechanical Engineering, Impairment Rating and is a Certified Chiropractic Sports Physician.


text:
Sunday1/22
Paul A. Smith: Standing In (weekend hours)
The Blaffer Art Museum is proud to present the exhibition Standing In by Jamaica-born, New York-based artist Paul Anthony Smith who makes photo-based works that push back against the medium's inherently predatory dimensions while simultaneously introducing a network of added layers to navigate.
For over a decade, Jacolby Satterwhite has used 3D animation, sculpture, performance, painting, and photography to create fantastical, labyrinthine universes. Exploring the themes of public space, the body, ritual, and community, Satterwhite draws from an extensive set of references guided by queer theory, Modernist tropes, and video game languages to challenge conventions of Western art through a personal and political lens. An equally significant influence is his late mother, Patricia Satterwhite, who lived with schizophrenia and made ethereal vocal recordings as well as drawings and diagrams for visionary household products throughout Satterwhite's childhood. His mother's work often serves as the source material within a decidedly complex structure of memory and mythology.


Her Birthday in fact was only just a few days ago (April 1st.).... so was another favorite actress of mine Jane Powell. How neat that they both share the same birthdays..... the are both in my opinion absolutely adorable!!!!
Have you ever seen them in "Two Weeks With Love"?!
The hardest things, but I'm thinking probably the most worth it too.
She is simply the cutest! I love her.
Can you believe it? I haven't seen Singin' in the Rain yet! I really want to though.
I LOVE SINGIN' IN THE RAIN!1!
I could watch it over and over again... SO funny, and I'm not always fastforwarding through the songs!!


Digiware has stood out for providing the best technology solutions in the market, validating its functionality, relevance and support, allowing us to offer alternatives with higher quality standards, adjusting to the specific needs of our clients and providing ongoing support through the implementation and support for each tool.
Digiware currently provides sales services and implementation, 7/24 support, as well as post-sales support for the following solutions.
Company leader in product development for information security, includes in its portfolio SecureFile allowing streamlining and automating file transfers with trading partners, customers, employees and internal processes.
Provides a high level of control throughout the organization and detailed audit of actions, enabling strict compliance with security policies and standards including PCI, HIPAA and state, national or local privacy laws.


Note: You are currently viewing documentation for Moodle 2.2. Up-to-date documentation for the latest stable version is available here: Large Installations.
This template will categorize articles that include it into Category:Installations.
This page was last modified on 27 January 2012, at 07:52.


Perhaps today IS a good day to listen to a podcast! The gang boards the Rotarran for an all-Klingon (and one Trill) adventure! That's right folks, it's Soldiers of the Empire, a true DS9 classic, and here to help us with our Klingon is returning guest Christine Anderson! She's here to clarify for us the meaning of concepts like tova'dok, explain Klingon hierarchy, tell us why they are properly called crinklefaces, and help us discover the surprisingly thin line between Klingon war songs and Billy Ray Cyrus' biggest hit. Meanwhile, the gang is just talking about Narns, Cylons, Planet of the Apes and Riker, and spilling things on themselves just like always. Grab some gagh and a barrel of blood wine and join us on the battlefield! Qapla'!


We genuinely care about the development of our trainees. We work hard to give them the best possible experience during their time with us. Our dedicated staff support them every step of the way, including helping them to find employment at the end of their qualification.
CEATA is proud to have won several awards recognising this dedication to engineering training.
The National Apprenticeship Service nominated CEATA's parent company Canal Engineering for the Midlands Regional Apprenticeship Awards in the medium-size employer category.
They went on to receive the Highly Commended award in both 2016 and 2017. Canal Engineering are proud to appear in the prestigious National Apprenticeship Awards as a Top 100 Apprentice Employer.
On 10th February 2016, SEMTA Skills Awards celebrated the 'Best of British Engineering', recognising the talented people and inspiring businesses that make the engineering sector and exciting and dynamic environment to work in.
CEATA were shortlisted for the SME Investment in Skills award, alongside Pentaxia Ltd and Automotive Insulations. CEATA went on to win the award, sponsored by Jaguar and Land Rover. Andrew Lord, Project Manager, accepted the award on behalf of the Academy.
The apprenticeship programme at Canal Engineering is making a significant contribution to their workforce skills and development strategy, working with CEATA for all their training and development needs.
If you'd like to find out more about what we can offer, contact us today.


text:
Former U.S. Officials View PA and Jordanian Threats
(JNS) Ariel Ben Solomon - David Wurmser, a former senior intelligence officer and adviser to the U.S. National Security Council, said that while both the Palestinians and Jordanians are threatening Israel over plans to apply Israeli law to the Jordan Valley and parts of Judea and Samaria, the PA and the Jordanian regime need Israel and the U.S. much more than the other way around. "The Jordanian leadership thinks it can buy quiet by yelling at Israel and letting its radicals blow off steam, but like in the past when it appeased radical forces, they [the Jordanians] will again turn to the U.S. and Israel to save them," said Wurmser. "The PA is entirely dependent on its cooperation with Israel to survive. We saw how long the PA lasted in Gaza before Hamas took over." Harold Rhode, who served for 28 years as an advisor on the Islamic world in the Office of the U.S. Secretary of Defense, said Abbas' threats are "almost assuredly just bluster," calling his rhetoric the "hold me back or I'll commit suicide strategy." "Past history shows us that whatever they say in public, they will most likely find a way to cooperate in private. Abbas and other senior officials are running a racket and the money for the Palestinians is going straight to their own foreign bank accounts, so they have the most to lose."


Dress bare wrists with one of our modern men's watches. A must-have accessory, our men's watches are contemporary timepieces that will complete everyday outfits. From classic leather straps to sleek stainless steel bracelet styles, each of our watches for men have a premium look and feel, while interchangeable strap styles offer multiple options dependent on outfit and occasion.


A new vulnerability in the system or Microsoft Outlook Hotmail was discovered by the famous tools pentest Squirrel-sploit I already made a tutorial for this new danger.
This looks uncannily like "Apache 2.2.14 mod_isapi Dangling Pointer Remote SYSTEM Exploit (CVE-2010-0425)" with main() cut out and your own header pasted in.
That is to say; it's fake, it's nothing to do with hotmail and your precious 'Squirrel-sploit' is nothing but a re-branded old version of MetaSploit.


vegetation. They function as a giant osmotic filtration system that is of vital importance to the water supply for the entire peninsula. They are unique the world around.
Although they appear to be flat and monotonous at first glance, a closer look reveals a microcosm of natural beauty and rich diversity, of vital energy and powerful poetics.


text:
Q: dynamic cursor in stored procedure hi i am dojng a stored procedure which conatains a cursor...cursor has a dynamic sql query ..this query has dynamic value..which is @industry..then i put the results in a temporary table..but the problem is when i execute the procedure results are not coming...
this is my stroedproc in sqlserver
ALTER PROCEDURE GETARTISTDETAIL  AS
BEGIN
    DECLARE @INDUSTRY VARCHAR(40)
    DECLARE @ID INT
    DECLARE @SQL1 VARCHAR(1000)
    DECLARE @SQL VARCHAR(1000)
    SET @INDUSTRY='''BollyWood'',''TollyWood'',''HollyWood'''
CREATE TABLE #TEMPTBL([NAME] VARCHAR(20),[AGE] INT ,[MAILID] VARCHAR(20))
    --SET @SQL='SELECT ARTISTID FROM ARTIST WHERE INDUSTRY IN ('+@INDUSTRY+')'
    DECLARE TEMPCRS CURSOR LOCAL SCROLL STATIC FOR SELECT ARTISTID FROM ARTIST WHERE INDUSTRY IN (@INDUSTRY)
    --PRINT @SQL
    --exec (@SQL)
    OPEN TEMPCRS
    FETCH NEXT FROM TEMPCRS INTO  @ID
    WHILE @@FETCH_STATUS=0
    BEGIN
    INSERT INTO #TEMPTBL SELECT [NAME],[AGE],[MAILID] FROM ARTIST WHERE ARTISTID=@ID
    FETCH NEXT FROM TEMPCRS INTO  @ID
    END
    CLOSE TEMPCRS
    DEALLOCATE TEMPCRS
    SELECT * FROM #TEMPTBL
    DROP TABLE #TEMPTBL
END

A: You don't need a cursor to do this, just use a subquery:
DECLARE @INDUSTRY VARCHAR(40)
DECLARE @SQL VARCHAR(1000)

CREATE TABLE #TEMPTBL([NAME] VARCHAR(20),[AGE] INT ,[MAILID] VARCHAR(20))

SET @INDUSTRY='''BollyWood'',''TollyWood'',''HollyWood'''

SET @SQL='INSERT INTO #TEMPTBL SELECT [NAME],[AGE],[MAILID]
          FROM ARTIST WHERE ARTISTID IN (
            SELECT ARTISTID FROM ARTIST WHERE INDUSTRY IN ('+@INDUSTRY+')
         )'

EXEC (@SQL)

SELECT * FROM #TEMPTBL
DROP TABLE #TEMPTBL

redpajama_set_name: RedPajamaStackExchange


text:
Home Geo Blocked Circuit Breaker – European Football Preview with Liberty Shield VPN
Circuit Breaker – European Football Preview with Liberty Shield VPN
It's still unclear whether or not football is going to stopped due to the spike in positive Covid-19 cases across Europe. The major European football leagues Bundesliga, Ligue 1, Serie A and La Liga are streamed live by a selection of channels including Sky Sports, BT Sport, Amazon Prime and La Liga TV.
The Premier League seems like it's moving closest to doing a "circuit break" stoppage, potentially for up to two weeks. That will cause havoc with an already congested schedule because leagues can not afford to finish late due to the rejigging that has taken place for next season to allow for the first ever winter World Cup. Fun Fact: European Football VPN is one of the most searched terms on Google.
Our European Football VPN articles are brought to you in partnership with EPL Index, and Dave Hendrick – host of the Two Footed Podcast, offering FREE podcasts to football fans.
There is no Ligue 1 football this weekend due to the Coupe de France round of 64 taking place. There will be one last round of Ligue 1 games on Wednesday before they begin their winter break, unless Covid causes a stoppage of course. With France a non-runner, and the Premier League covered in it's own preview, here's a quick teaser for the best games in Spain, Germany and Italy this weekend.
UK TV and video streaming rights for 2021/22 season (excludes unofficial IPTV streaming services who will show footage from other broadcasters):
Premier League – Sky Sports, BT Sport & Amazon Prime
Bundesliga – Sky Sports
Ligue 1 – BT Sport
Serie A – BT Sport
La Liga – Amazon Prime & La Liga TV
SPFL – Sky Sports & BT Sport
⚽ Sevilla vs Atletico Madrid
📅 Saturday 18 December 2021
⏰ 2000 UK Kick-Off
🖥 La Liga TV
Starting in Spain, stuttering Atletico Madrid who have lost their last two league matches, travel south to take on second placed Sevilla in what promises to be a hard fought game. Both sides have only been able to watch as Real Madrid have built a strong lead at the top of the table but they won't want to fall too much further behind in case Los Blancos start to stutter themselves.
Sevilla's domestic form has been in stark contrast with their disappointing Champions League campaign, which saw them fail to advance past the group stage. Now, it is possible that Sevilla are playing some 4D chess and purposely finished third so that they could drop into the Europa League knowing that, given their history, they'll probably win that competition again. With six triumphs in the Europa League, Sevilla have won twice as many as any other team in history. Some might look down their nose at the competition but for many years – when it was known as the UEFA Cup – it was arguably harder to win than the European Cup.
Their league form has been good, with only two losses so far this season, but they will be disappointed with draws against the likes of Elche and Alaves. With Real in form like they've displayed this season, there simply isn't room for mistakes like that. Sevilla have been outstanding defensively this season, conceding only 11 goals in 16 league matches, but they have found scoring goals to be a chore. They desperately need Youssef En-Nesyri to have a prolonged run of fitness and form as he is the only reliable goalscorer in the squad. The Moroccan striker has been ruled out until February with a muscle injury and Sevilla are going to need Rafa Mir, Lucas Ocampos and Erik Lamela to really step up in his absence.
Atletico also underperformed in their Champions League group but did manage to scrape through in second place, 11 points behind group winners Liverpool. They were initially drawn to face Bayern Munich in the knock out phase, but appealed the draw because UEFA had made an error in the process and were rewarded by the far easier task of playing Manchester United. Atletico might well have provided the toughest test to Sevilla in the Europa League had they finished 3rd themselves and don't appear to be real contenders in the Champions League, but they will fancy their chances of overcoming United.
Domestically they just haven't found their groove this season. They haven't been close to the same team defensively as they were when they struck fear into opposition teams all across Europe and, like Sevilla, scoring goals just isn't something that's happening for them. It's even stranger for Atleti considering they own Luis Suarez, Antoine Griezmann, Joao Felix, Mathaus Cunha and Angel Correa. Few teams possess so many high calibre forward players but Diego Simeone hasn't been able to find the right balance in the team this season. He will need his attack to fire this weekend, given the absentees they have elsewhere. Goalkeeper Jan Oblak, arguably the world's best, is expected to miss the game in what is a huge blow for El Cholo.
⚽ Freiburg vs Leverkusen
📅 Sunday 19 December 2021
🖥 Sky Sports Live Streaming
When Leverkusen made the decision to hire Gerardo Seoane as their new manager, there was an expectation that this would be a season for settling the team into a new style of play, bedding in new players and developing youth. A Europa League finish would have been seen as a success, and it may well be that Bayer find themselves in the Europa League spot come the end of the season. But for now, the outstanding Swiss coach is overachieving. The team adapted quickly to his methods, the new signings have settled in and the young stars in the squad have stepped up.
The biggest development has been the form of Patrik Schick though, with the Czech striker on fire so far this season. Coming off an outstanding showing at the summers European Championships, Schick has set the Bundesliga on notice that he is the real deal. 16 goals in 13 league appearances, coupled with outstanding all round play, has provided the springboard for Leverkusen to be a top four contender this season. Schick's combinations with the likes of Florian Wirtz, Amine Adli and Moussa Diaby have made Die Werkself one of the most entertaining teams in Europe at times. Defensively they had been solid too, that is until the concession of seven goals across games against Eintracht Frankfurt and Hoffenheim took the air out of their balloon. Seoane will need to have his backline back at their best this weekend in what promises to be a big test against Freiburg.
When people talk about the best German coaches, one name is constantly left off the list. You'll hear about Klopp, Tuchel, Flick, and Nagelsmann. You might hear about Marco Rose. People might mention young coaches, like Tedesco, Kohfeldt and Hoeness. But one name never gets mentioned. Christian Streich. Streich is about to celebrate the 10 year anniversary of his appointment at SC Freiburg and is often an afterthought. Maybe it's because he's stayed so long at one club, an outlier in modern German football and people have forgotten about him. Maybe it's because he doesn't seek limelight, referring to himself as a "normal guy" while other managers do their best to handle their own PR, or maybe it's because Freiburg are an unfashionable club. It's likely a mixture of all three, but the outstanding job he continues to do season after season deserves recognition. Keeping Freiburg in the division is an achievement, considering their tight budget and the difficulty they face in attracting players to what is often seen as a footballing outpost. Streich is aiming for a third successive top half finish, something the club have never achieved before.
They currently sit 5th in the table, and boast the meanest defense in the Bundesliga. Their recent form has been poor, with four defeats and a draw in their last six matches, but the fact that they remain 5th shows what a strong start to the season they had. With 16 weeks of the season completed, it's a laudable achievement that Freiburg have spent nine of those weeks in the top half. There are no stars at Freiburg, but there is a squad full of selfless, hard working players fully committed to giving absolutely everything for the club. They have entirely bought into Streich's methods and their true strength is their unity. Leverkusen will know they've been in a game when the final whistle goes on Sunday.
⚽ AC Milan vs Napoli
🇮🇹 Serie A
🖥 BT Sport Live IPTV
A top four clash is the glamour tie in Serie A this season. Inter Milan might occupy top spot right now but it's Napoli who sat in that position for the majority of the season so far. After going top at the conclusion of Matchweek Four, Napoli held top spot for 12 successive weeks until back to back home defeats at the hands of Atalanta and Empoli. They'll be out to avoid a third straight defeat when they travel north to take on AC Milan.
Milan themselves spent one week on top of the Serie A pile this season and bar Matchweek One they have finished every round of the season so far in the top four. This may not be the Milan team of Baresi, Maldini, and the three Dutch Masters, or the team of Pirlo, Seedorf, Kaka and Shevchenko, but this is a Milan team on that is back competing for major honours in Italian football. They took part in the Champions League this season for the first time in eight years, and though it wasn't a successful campaign it was a taste of the biggest stage for a squad of players who, Zlatan aside, aren't hugely experienced in elite level football.
Domestically this season, Milan began like a house on fire. They won 10 of their first 11 games and kept pace with Napoli before having a dip. Two wins, two draws and two defeats in their last six isn't necessarily poor form, but the manner of the defeats to Fiorentina and Sassuolo didn't sit well with the Rosseneri faithful. Inter being top of the table won't be going down well either, especially as it was Milan's failure to beat Udinese last weekend that allowed Inter to sneak past them. A win over Napoli, in what was arguably the biggest game in the country 30 years ago, would go a long way towards making the fans happy again.
Like their opponents this weekend, Napoli won 10 of their first 11 games and roared to the top of the Serie A pile before a recent six game run that saw them pick up only five points caused them to drop to 4th spot. Luciano Spalleti was hired in the summer to replace Reno Gattuso and deliver the long craved Serie A title that they have been chasing for the best part of a decade. So often the bridesmaid to Juventus's bride, Napoli spotted the decline of the Old Lady and the potential step back of Inter Milan after the three major departures they endured during the summer. They realised that, for the first time since the 2011/12 season, the year where Juventus began their era of dominance, the season began with no clear cut title favourite.
Napoli have strength and depth all over the pitch and Spalletti is a coach who knows how he wants his team to play. He's overseen what must, overall, be seen as a good first half of the season. A top four position in Serie A, sitting only four points off the top, and passage through a tricky Europa League group will be pleasing to under fire owner Aurelio De Laurentiis who has come in for a lot of criticism in recent years for failure to deliver the trophies that Napoli fans crave. Spalleti will know that ADL will not stand for failure, so he won't want to suffer another defeat this weekend.
No matter where you are in the world, you can use your Liberty Shield VPN to find a way to watch all of these games.
Don't have a Liberty Shield VPN? You're missing out! Click right here to check out what we can offer you, and use the code EPLBLOG to get a HUGE 50% OFF at check-out.
How to watch every European Football match from anywhere…
European Football VPN matches for the 2020/21 season will be streamed live between BT Sport, Sky Sports and La Liga TV, as well as their respective apps for iPhone, iPad, Android, Smart TV, Now TV, FireTV etc.
But these streaming services are not available to everyone, for example when you load BT Sport in the USA, Germany, Ireland, Netherlands, France, Spain, Portugal, Australia, Dubai, Canada etc. you will get an error message.
This is basically because their streaming services are geoblocked based on the IP address being used to access it. You must be a UK domestic web user to access BT Sport and BBC Sport live tv streaming.
If you want to watch on your Windows PC, Mac, FireTV, iPhone, iPad or Android then you can get a UK Proxy or VPN Apps from Liberty Shield, FREE for 48 hours and then from only £8.99 per month.. (use coupon code EPLBLOG to get a HUGE 50% OFF at check-out)
Prefer to watch on supported media streaming devices like Now TV, Smart TVs, Apple TV, Xbox, PS4, Roku etc? You'll need a UK configured VPN Router setup as British, available from only £9.99 with Worldwide Shipping available.
How can I watch BT Sport 2021/22 season matches live?
As well as the FA Cup VPN, BT Sport has the rights to just over 50 Premier League fixtures during the 2020/21 campaign, and will also carry coverage of the UEFA Champions' League and Europa League until 2024. Subscribers can watch BT Sport on their computers as well as their various apps on connected devices. They do offer a Monthly Pass with no contract, which will give customers access to the BT Sport mobile app. BT Sport Box Office will no longer show the matches via the now scrapped pay-per-view offering, but is it too late and have customers already moved towards illegal streams and IPTV providers?
Remember that BT Sport also features coverage from the Ligue 1, and holds rights to Moto GP, UFC and WWE coverage as well. After a long delay the BT Sport app is now available on several models of Smart TV as well as Roku and Amazon Fire TV devices.
Furthermore; BT Sport isn't the only geographically-censored streaming services a VPN or Proxy will allow you to access. Other UK services like Sky Sports, Now TV, BBC iPlayer, Amazon Prime, ITV Hub, All 4 and BritBox are available. Plus with the option to switch to our USA service whenever you like, you can access Hulu, HBO GO, Netflix and Pandora. Essentially you can access international content from virtually anywhere!
Previous articleThis Weekend in NFL – Clear Picture – Watch Gamepass with NFL VPN
Next articlePremier League VPN 2021-22 Season – Match Week 17 Preview with Liberty Shield VPN


Based primarily in London , England , United Kingdom , the University of London is a federal mega university made up of 31 affiliates: 19 separate university institutions, and 12 research institutes. As such, the University of London is the largest university in the UK by number of full-time students, with 135,090 campus-based students and over 45,000 in the University of London External System.
The university was first established by a Royal Charter in 1836, which brought together in federation London University (now University College London ) and King's College (now King's College London ), to establish today's federally-structured University of London.
Graduates of the University of London may use the post-nominal letters 'Lond.' (Londiniensis) after their degree abbreviations.
The nine largest institutions of the federal university, usually termed the colleges, are Birkbeck , Goldsmiths, King's College London , the London Business School , the London School of Economics and Political Science , Queen Mary , Royal Holloway, the School of Oriental and African Studies , and University College London (UCL). It should be noted that Imperial College London left the University of London during celebrations of its own centenary on 9 July 2007.
For most practical purposes, ranging from admission of students to negotiating funding from the government, the 19 constituent colleges are treated as individual universities. Legally speaking they are known as Recognised Bodies, with the authority to examine students and have the university award them degrees. Some colleges have recently obtained the power to award their own degrees and the University has amended its statutes to allow them to do so and yet remain in the university federation. For instance, beginning in the 2007/08 academic year, King's College London , the London School of Economics and the University College London began awarding their own degree certificates while retaining their constituent-college status within the University of London.
The twelve institutes, or Listed Bodies, within the University of London offer courses leading to degrees that are both examined and awarded by the University of London. Additionally, twelve universities in England , several in Canada and many in other Commonwealth countries (notably in East Africa) began life as associate colleges of the university offering such degrees. By the 1970s almost all of these colleges had achieved independence from the University of London. An increasing number of overseas academic institutes offer courses to support students registered for the University of London External System's diplomas and degrees although no accredidation from London for these schools exists other than the final examinations administered by the University of London which all pupils take.
The University of London owns a considerable central London estate of 180 buildings in Bloomsbury , near Russell Square tube station .
Some of the University's colleges have their main buildings on the estate. The Bloomsbury Campus also contains eight Halls of Residence and Senate House , which houses the Senate House Library, the chancellor's official residence and previously housed the School of Slavonic and East European Studies, now part of University College London (UCL) and housed in its own new building. Almost all of the School of Advanced Study is housed in Senate House and neighbouring Stewart House.
The University also owns many of the squares which formed part of the Bedford Estate, including Gordon Square , Tavistock Square , Torrington Square and Woburn Square .
The estate includes several properties outside Bloomsbury also, with many of the University's colleges and institutes occupying their own estates across London. Clare Market and part of Aldwych where the London School of Economics and Political Science is based, as well as the West Wing of Somerset House , the location for the Courtauld Institute of Art and King's College London , St Bart's Hospital, the University of London Boat Club in Chiswick and the Egham campus of Royal Holloway with its historic Founder's Building are also examples of properties which form part of the University's estate.
In addition, there are several properties outside London, including the University Marine Biological Station, Millport on the Isle of Cumbrae , a number of residential and catering units further afield and the premises of the University of London Institute in Paris which offers undergraduate and postgraduate degrees in French and Historical Studies.
Founded in 1836, the University at first comprised just two colleges: University College London , which previously had no official chartered status and did not apply religious tests to its students, and King's College London , which had been chartered since 1829 and which admitted only members of the Church of England. Both King's (founded 1829) and University College London (founded 1826) pre-date the University of London, which initially served solely as an examining body for the constituent colleges.
In 1858 the University expanded its role by offering the University of London External System to candidates outside of the colleges, the first of its kind in the country. A new headquarters at 6 Burlington Gardens , providing the university with exam halls and offices, was built to accommodate the new role. In 1878 the University set another first when it became the first university in the UK to admit women on equal terms with men. Four female students obtained Bachelor of Arts degrees in 1880 and two obtained Bachelor of Science degrees in 1881, again the first in the country.
In 1898, in part as a response to criticisms of universities which merely served as centres for the administration of tests, and calls for research and education to be more central functions of universities, the first University of London Act was passed, reforming the University and giving it responsibility for monitoring course content and academic standards within its institutions. The monitoring was conducted through newly formed centralised faculties and Boards of Studies, and King's and UCL now became constituent parts of the University of London. A symbolic element to the new centralisation of the University was the fact that UCL property became property of the University of London.
This significant expansion of role meant the University again needed more space, and so 6 Burlington Gardens was vacated in 1899. Shortly after the 6 Burlington Gardens was vacated the University went through a period of rapid expansion. Bedford College, Royal Holloway and the London School of Economics all joined in 1900, Regent's Park College , which had affiliated in 1841 became an official divinity school of the university in 1901, Goldsmiths College joined in 1904, Imperial College was founded in 1907, Queen Mary College joined in 1915, the School of Oriental and African Studies was founded in 1916 and Birkbeck joined in 1920. This rapid expansion meant that the University's new premises would prove insufficient by the 1920s, requiring yet another move. A large parcel of land in Bloomsbury near the British Museum was acquired from the Duke of Bedford and Charles Holden was appointed architect with the instruction to create a building "not to suggest a passing fashion inappropriate to buildings which will house an institution of so permanent a character as a University." This unusual remit may have been inspired by the fact that William Beveridge, having just become director of LSE, upon asking a taxi driver to take him to the University of London was met with the response "Oh, you mean the place near the Royal School of Needlework". Holden responded by designing Senate House, the current headquarters of the university, and at the time of completion the second largest building in London.
During the Second World War the colleges of the university (with the exception of Birkbeck) and their students left London in favour of safer parts of the UK, while Senate House was used by the Ministry of Information, with its roof becoming an observation point for the Royal Observer Corps. Though the building was hit by bombs several times it emerged from the war largely unscathed; rumour at the time had it that the reason the building had fared so well was that Adolf Hitler had planned to use it as his headquarters in London.
The latter half of the last century was less eventful, mostly characterised by expansion and consolidation within the university, with the most significant risk within the university being some of the larger colleges (most notably UCL, King's, LSE and Imperial) periodically putting forward the possibility of their departure from the university, though this usually only happened when the colleges were negotiating for more powers. There was however a marked transference of academic and financial power in this period from the central authorities in Senate House to the individual colleges. There was also a tendency for smaller colleges to be amalgamated into larger "super-colleges". A significant development in this process was the closing down of the Convocation of all University of London alumni in October 2003; this recognised that individual college alumni associations were now increasingly the centre of focus for alumni.
In 2002, Imperial College and UCL mooted the possibility of a merger. This raised a question mark over the future of the University of London and the autonomy of smaller colleges within it. Subsequently considerable opposition from academic staff of both UCL and Imperial led to a rejection of the merger.
On 9 December 2005, Imperial College became the first college to make a formal decision to leave the university. Its council announced that it was beginning negotiations to withdraw from the university in time for its own centenary celebrations, and in order to be able to award its own degrees. On 5 October 2006, the University of London accepted Imperial's formal request to withdraw from the federation. Imperial became fully independent on 9 July 2007, as part of the celebrations of the college's centenary.
The Times Higher Education Supplement announced in February 2007 that the London School of Economics , University College London and King's College London all plan to start awarding their own degrees, rather than degrees from the federal University of London as they have done previously, from the start of the new academic year (starting in Autumn 2007). Although this plan to award their own degrees does not amount to a decision to formally leave the University of London, the THES suggests that this 'rais[es] new doubts about the future of the federal University of London'. However, the University continues to grow and, in 2005, admitted the Central School of Speech and Drama.
The University of London first received a grant of arms in April of 1838. The arms depict a cross of St George upon which there is a tudor rose surrounded by detailing and surmounted by a crown. Above all of this there is a blue field with an open book upon it.
Most decisions affecting the constituent colleges and institutions of the University of London are made at the level of the colleges or institutions themselves. The University of London does retain its own decision-making structure, however, with a senate, responsible for matters of academic policy, and an estates committee, responsible for managing University of London property, underneath a council, which act as the primary executive body of the university. The council is made up of the chancellor (who does not attend meetings), the vice-chancellor, the heads of all the colleges and institutes of the University, 18 academics elected from the senate, five student representatives, various lay members (appointed by the council or the government) and various vice-chancellors of different departments.
School of Slavonic and East European Studies - now part of University College London.
Regent's Park College moved to Oxford in 1927, becoming a Permanent Private Hall of the University of Oxford from 1957.
A number of major universities originated as university colleges teaching the degrees of the University of London External System. After developing the ability to function fully, these colleges became able to award their own degrees.
University College Colombo, established by the Ceylon University Ordinance Act in 1942 as the University of Ceylon.
University College Nottingham, awarded a Royal Charter in 1948 as the University of Nottingham .
University College Southampton, awarded a Royal Charter in 1952 as the University of Southampton .
University College Leicester, awarded a Royal Charter in 1957 as the University of Leicester .
A number of other colleges had degees validated and awarded by the University of London.
St. Patrick's College, Thurles, Ireland - from 1849 the University of London, allowed Thurles to offer degrees.
Wesleyan Collegiate Institution, Taunton , which became Queen's College, Taunton.
Between 1946 and 1970, the University entered into 'schemes of special relation' with university colleges in the Commonwealth of Nations. These schemes encouraged the development of independent universities by offering a relationship with the University of London. University colleges in these countries were granted a Royal Charter. An Academic Board of the university college negotiated with the University of London over the entrance requirements for the admission of students, syllabuses, examination procedures and other academic matters. During the period of the special relationship, graduates of the colleges were awarded University of London degrees.
1956 - University College of Rhodesia and Nyasaland (now the University of Zimbabwe ).
1961 - Royal College Nairobi (now the University of Nairobi ).
In 1970 the 'Schemes of Special Relation' were phased out.
Some 135,090 students (approximately 5% of all UK students) attend one of the University of London's affiliated schools. Additionally, over 45,000 students follow the University of London External System.
The ULU building on Malet Street (adjacent to Senate House) is home to the University of London Union, which acts as the student union for all University of London students alongside the individual college and institution unions. As well as representing students, the union plays host to a number of shops and bars (including a nightclub and live music venue), owns London Student (the largest student newspaper in Europe) and offers its own gym and swimming pool for student use.
Though most sports teams are organised at the college level, ULU does run a number of sports clubs of its own, some of which (for example the basketball team) compete in BUCS leagues. The union also organises its own leagues for college teams to participate in. These leagues and sports clubs are supported by Friends of University of London Sport which aims to promote them.
In addition to these ULU caters for sports not covered by the individual colleges through clubs such as the University of London Union Lifesaving Club, which helps students gain awards and learn new skills in lifesaving as well as sending teams to compete throughout the country in the BULSCA league.
ULU also organises a number of societies, ranging from Ballroom and Latin American Dance to Shaolin Kung Fu, and from the University of London Big Band to the Breakdancing Society. Affiliated to the University is the University of London Society of Change Ringers, a society for bellringers at all London universities.
The University runs the famous University of London Boat Club , which is considered along with the Oxford University Boat Club and the Cambridge University Boat Club to be one of the three best university rowing clubs in the country.
The University also has a representative football team, which dates back to 1913 and is a collection of the best players from the various colleges. The team plays games against sides such as Cambridge's and Oxford's 'Blues' sides as well as the R.A.F, Navy and Army. Currently the team has use of both Motspur Park Athletics Stadium (Fulham F.C.'s training ground, and a former University of London property) and the Honourable Artillery Company's grounds for training and home match purposes. Former players and managers of the team include Bobby Robson and Jimmy Hill.
University of London Orienteering Club is an umbrella club for all University of London orienteering groups. Members participate in orienteering events across the UK, and occasionally further afield. In 1997 the club sent a team to participate in the US championships in Colorado.
A large number of famous individuals have passed through the University of London, either as staff or students, including at least 4 monarchs, 52 presidents or prime ministers, 59 Nobel laureates, 6 Grammy winners, 2 Oscar winners and 3 Olympic gold medalists.
Staff and students of the university, past and present, have contributed to a number of important scientific advances, including the discovery of vaccines by Edward Jenner and Henry Gray (author of Gray's Anatomy). Additional vital progress was made by University of London people in the following fields: the discovery of the structure of DNA (Francis Crick, Maurice Wilkins and Rosalind Franklin); the discovery of penicillin (Alexander Flemming and Ernest Chain); the development of X-Ray technology (William Henry Bragg and Charles Glover Barkla); the formulation of the theory of electromagnetism (James Clerk Maxwell); the determination of the speed of light (Louis Essen); the development of antiseptics (Joseph Lister); the development of fibre optics (Charles K. Kao); and the invention of the telephone (Alexander Graham Bell).
Notable political figures who have passed through the University of London include Muhammad Haji Ibrahim Egal, Romano Prodi, Junichiro Koizumi, Aung San Suu Kyi, Archbishop Desmond Tutu, Taro Aso, Mohsen Sazegara, Nelson Mandela, John F. Kennedy and Mahatma Gandhi.
In the arts field the university has produced the novelists Malcolm Bradbury, G. K. Chesterton, H. G. Wells, Thomas Hardy, Arthur C. Clarke, J.G. Ballard and the poet John Keats. Many artists have been associated with the university, including Jonathan Myles-Lea, and several of the leading figures in the Young British Artists movement (including Ian Davenport, Tracy Emin and Damien Hirst). Outstanding musicians across a wide range include the conductor Sir Simon Rattle, the soprano Felicity Lott and both members of Gilbert and Sullivan to Mick Jagger, Elton John and members of the bands Coldplay, Suede, The Velvet Underground, Blur, Iron Maiden, Placebo, The Libertines and Queen.
The University of London has also played host to film directors (Christopher Nolan, Derek Jarman), philosophers (Karl Popper, Roger Scruton), explorers (David Livingstone), international academics (Sam Karunaratne), and leading businessmen (Michael Cowpland, George Soros).
Among the more controversial alumni and professors can be included the pornographer David Sullivan, the international terrorist Carlos the Jackal, and the Soviet double agent Anthony Blunt.
Japanese Students at Cambridge University in the Meiji Era, 1868-1912: Pioneers for the Modernization of Japan, Noboru Koyama. Lulu Press, September 2004.


text:
Professor Sinister And His Marauding Mechanicals
I've given up on Chuckie Egg for the GBA. Not because it got too complicated; the opposite in fact. I wanted to play with things the GBA will allow me to try out, like parallax scrolling, chiptunes and pixel art, and remaking a four color Dragon 32 game just wasn't cutting it. I still adore the game though. I'm keeping the engine but I'm going to do a full reskin with new graphics, music, sound, and possibly new level layouts.
The remake was drifting further and further from the original anyway. The first change I made was to eliminate the flicker. Then I added scrolling for the GBA, and then I replaced the music with XM versions. Why not just modernize the whole thing?
The new game is called "Professor Sinister and his Marauding Mechanicals". You play Professor Sinister, an evil scientist who created robots to help him destroy the world. Unfortunately his robots have gone wrong and he's lost control of them. The Chuckie Egg hens have become robots, the eggs have become vacuum tubes, and the chicken feed has become little power packs.
I've added parallax scrolling and a little chiptune. As per usual there's a large list of things left to do, but here's a video of the state of things so far:
Though the graphics are all original, they draw from a number of different influences. I wanted the robot to look something like a cross between the robot from "A Grand Day Out with Wallace and Gromit" and the robot from "Forbidden Planet". The palette and background was inspired by Rick Dangerous 2. I referenced the Master System version of "Wonder Boy in Monster Land" when drawing the life indicator. The original sketches for Professor Sinister looked like something from "The Far Side", but as a 16x16 sprite that doesn't really come across.
professor-sinister
chuckie-egg
Chuckie Egg GBA
Here's a video of something old-but-new I've been working on:
It's Chuckie Egg, but for the GBA.
How did I manage to squeeze the bitmap-mode UI library built for a dual-CPU 66/16MHz DS into a single-CPU 16MHz GBA? With full-screen scrolling?
I didn't even try.
Extracting A Library
I mentioned before that the games I've been writing with SZLib adhere reasonably strictly to the MVC architecture. The game logic forms the "model" portion of that architecture. If done correctly, the game logic could live in an entirely separate library from the code that handles graphics, sound and user input. That's what I've done to get this working: I moved the model to a new "SZChuckie" library and created a new front-end project that uses the GBA's tile-and-sprite graphics modes.
Splitting out the game library was mostly trivial, but somehow took far longer than I expected. References to bitmaps, sounds and user input handling had all found their way into the game logic. For example, each of the sprite-esque things in the game (eggs, chicken feed, hens, ducks, Harry) stored an array of bitmaps that represented their animations. The view controller could ask for the current bitmap in order to display the correct image in a view. I had to replace the bitmap reference with a more abstract "animation frame" object, which ditched the bitmap data and stored just a size and a frame number. The view controller now stores the bitmaps and uses SZLib's type introspection to figure out which bitmap to display for any incoming didChangeFrame events emitted by the game object. The class that represents a level had a function for generating a bitmap from its level data which the view controller used as the game's background; I moved that into a separate file.
Pulling the sounds into a higher layer meant adding more callbacks to the game object's delegate. The delegate - in this case, the view controller - can respond appropriately and play the correct sounds.
Input was similarly straightforward. I added a new d-pad/button class specific to Chuckie Egg (so there's a "jump" button instead of "A" and "B" buttons) and pass its state to the game whenever I call its update() function. As a side-effect, this fixed a few places where the game wasn't responding correctly to some button presses or the analog stick.
The most long-winded changes were purely administrative: renaming all of the files/classes/etc; creating makefiles and build scripts; and testing that nothing was broken.
With all that done I could move onto the GBA port, which of course started with more administrative work. I needed to get three libraries from SZLib building for the GBA: the core library, which includes reference-counted objects, boxed primitives and collections; the geometry library, which includes points, sizes and rectangles; and the hardware abstraction library, which includes abstractions for initializing the hardware, sound, vwaits and hardware division. Those all needed makefiles. I used the makefile from libgba as a template. With the makefiles in place I could add GBA support to the hardware abstraction library, which involved digging through libgba's headers to find the appropriate function calls (where available) or disabling the functionality (where not). The core and geometry libraries just worked.
That all put the project in a very weird place. Typically when I start a game I get enough of the logic working to start pushing pixels around on the screen, and from there the logic and graphics code evolve in parallel. Somewhere near the end of the project I'll add sound. However, in this project I just had to link the game library and hook up a few callbacks to get a fully-working and audible, but invisible, version of Chuckie Egg.
The GBA
Programming the GBA isn't particularly difficult. Well, it shouldn't be difficult because it's a very simple platform. It's a little harder than it needs to be because libgba has no documentation and the canonical tonc guide references constants that don't match libgba, so I find myself trying to interpret memory addresses rather than looking for the names of those addresses. The command line graphics conversion utility that ships with devKitARM (grit) has a tendency to either get things wrong (it refuses to generate a correct palette for me) or be unhelpfully helpful (some combination of settings causes it to insert a blank tile at the start of a tile map, causing me to spend far too long trying to figure out why I couldn't fill the screen with the tile I wanted).
Once I really get the hang of the GBA I'll hide all of its features behind an abstraction library that I can make cross-platform, which will let me debug my code on my development machine. With neither a debugger nor the ability to printf() on the GBA I'm wasting far too much time running C in my head.
The GBA's screen is 240x160 pixels, which is about 20% smaller than the Dragon 32's resolution of 256x192 (this is a remake of the Dragon 32 version). The DS port was very fortunate in that the DS' resolution is also 256x192, so there was no need to scroll or scale the game to get it to fit. For the GBA port I decided to opt for scrolling as it's so simple to achieve (just change a couple of registers). It refused to work for a while until I dug up a comment in one of the examples that noted that the registers are write-only. Duh.
I think that the scrolling works really well. The levels aren't much larger than the GBA's screen so it's impossible to get disoriented or lost. It is possible to get into a "leap of faith" situation where a player might jump from the top of the level hoping that there's something at the bottom to catch them, but it doesn't make the game less enjoyable (at least, not for me, but then I know these levels backwards so I'm not a great test subject).
The unmodifiable parts of the levels - the floors and ladders - are implemented in a tiled background. Everything else - the hens, duck, eggs, chicken feed and Harry himself - are all sprites. That gives me around 30 sprites per level, which the GBA throws around without breaking a sweat. I'm considering changing the eggs and feed to become tiles within the background if performance becomes a problem.
Sound is powered by MaxMod. The API is slightly different to the DS' version, but they're similar enough that making sound work was simple.
I wasn't particularly worried about performance. From the considerable amount of perf work I've done on the DS version I know that the overwhelming amount of work the game does is in the UI libraries that I'm not using.
Disaster Strikes
Everything was progressing well until I hit a massive problem. The game worked perfectly in mGBA and VBA-M, but it refused to do anything but display a green screen on a real GBA. Every time I've encountered something like this on the DS it was caused by a memory problem. The DS emulators I use don't accurately model the behavior of memory on a real device, so problems like allocating the wrong amount of memory, forgetting to initialize variables, and using memory after it's freed (etc) can crash real hardware but cause no problems under emulation. I set about investigating.
First step: Code inspection. Was I allocating the wrong amount of memory for my objects? That's a mistake I've made repeatedly in SZLib: allocating enough memory for a pointer to a struct rather than the struct itself. Nope. Forgetting to initialize variables? Nope. Leaking memory? Nope.
Next: Run the SDL version through a static analyzer. No problems.
Next: Run with the address sanitizer enabled. No problems.
Maybe the problem is in the GBA front-end code. I #ifdef-ed out enough of the GBA-specific code to get it compiling on my dev machine and ran that through all of the available code/memory checking tools. No problems.
Let's dig back through the Git history to find a version that did work on the GBA. Rolling back a few days gave me a version that worked. It seemed that I'd subsequently made a change where I stopped writing to an intermediate buffer representing the OAM (object attribute memory; for sprites) and wrote directly to it. Undoing that change didn't fix the bug.
I started to remove arbitrary pieces of code that caused memory allocation to occur. Sometimes a change would allow the game to run; sometimes a different bug would manifest. It made no sense.
I enabled libgba's console output and wrapped malloc() so that it would print the address of the allocated memory. No clues there: all of the addresses were safely contained within the correct region of RAM. Then I started printing out the addresses of stack variables. It seemed that I was getting close to the end of the stack, which perhaps made sense. Stack variables are stored in a 32K block of memory (IWRAM) which is immediately adjacent to a 1K block of memory that controls I/O. Overflowing the stack would cause weird behavior. Immediately following the 1K I/O block is a 1K palette block. One of the changes I made to the game caused the palette to start cycling. Aha, that seems likely. But how am I overflowing the stack? And why doesn't that bug show up in the emulators?
I started up mGBA and took a look at its memory viewer. According to that the game uses a tiny fraction of the 256K and 32K RAM blocks. There's no way it should be overflowing the stack or encountering problems related to memory shortages.
Perhaps there's something wrong with the GBA itself. I recently got hold of another backlit GBA which is the device I've been testing on. I haven't used it for playing games; maybe it's defective? Nope, same problem on another device.
At this point I'd wasted three evenings on this ridiculous problem and, although I'd learned a significant amount about how the GBA's memory is laid out, I'd made no progress in figuring out the cause of the issue.
I put everything away and thought about the problem some more.
There's nothing wrong with the majority of the code. It's running on 4 other platforms without issue. I've tested it with every analysis tool at my disposal and can't find any problems. The code that's specific to the GBA amounts to less than 1,000 simple lines, and I analyzed most of that too. The fact that the game runs perfectly under emulation suggests it isn't a library or compiler problem. It isn't a problem with the GBA hardware because it exhibits the same behavior on two different devices. It isn't a memory exhaustion problem. So what's the difference between running the game in an emulator and running it on my GBA?
The flash cart.
Could it be the flash cart?
I've got an EZ-Flash IV (one of the older ones that uses mini-SD cards). It runs its own code and patches ROM files in order for them to work correctly. Could the flash cart be breaking the ROM? Fortunately I've got a couple of older flash carts lying around. Copy the ROM to my Supercard SD and…
It works. Perfectly.
The EZ-Flash is doing something bad to the ROM, causing it to write to bad memory addresses, causing bad things to happen. There's nothing wrong with my code. And there was no way I was ever going to debug that problem.
There's plenty of work left to do before the game is finished:
Add a "Simian Zombie" screen.
Add a title/high score screen.
Add level/life/score/time/bonus indicators.
Show the "Game over" screen when the player dies.
Show the score increasing when the player completes a level.
Show the "Get ready" screen before each level.
I also want to add an attract mode showing little demos of gameplay that appear after a few seconds idling on the title screen. I'm thinking of using that system to show how to perform various techniques in the game (like grabbing ladders easily, bouncing between ladders, etc). Oh, and then there's the level editor that I didn't finish, too, but that makes less sense on the GBA as it doesn't have a writable file system.
szchuckie
SZLib 3DS
Just in time for it to be killed off by Nintendo in favour of the Switch (if you could ever find them in the shops; grumble grumble), Hanky Alien and Chuckie Egg now run on the 3DS. Getting the new platform up and running was pretty easy. Input was straightforward: the d-pad required switching to a couple of new functions for reading the button state but otherwise the constants are the same in libctru as those in libnds. Touch somehow just worked, which was surprising.
The hardest part was getting the graphics up and running. Not only does the 3DS introduce yet another set of RGB encodings, but the output of the LCDs is rotated 90 degrees from the VRAM. What's that? You have a bunch of 2D graphics functions that are all optimized around VRAM being laid out in rows, from left to right? Bwahaha! Now VRAM is organized into columns, from bottom to top.
Though graphics were the trickiest part, the most laborious exercise was checking that the projects continued to build correctly for all 5 of the currently supported platforms (DS, 3DS, PSP, Dreamcast and SDL). I really need to come up with a better build system for the PSP and Dreamcast, and it'd be neat if devKitARM supported makefile names other than "makefile".
There are a few things still to do:
libctru introduces yet another sound API, so there's no sound yet;
SZLib doesn't cater for the possibility that a device has multiple screens with different dimensions, so the bottom screen is off-center.
Anyhow, here are early 3DS builds, which I've tested out on my old 3DS XL and Citra (which is shaping up to be a great homebrew tool):
ChuckieEgg3DS
HankyAlien3DS
szlib
hankyalien
Fake DS Lite
I had some problems with devKitARM recently that broke Chuckie Egg and Hanky Alien. Thinking that the problem might be related to some DSi-specific code that got added to libnds, I decided to try out the games on my DS Lite. Unfortunately, the console no longer recognized DS carts. No amount of fiddling would get it to read either of the two carts I tested.
I'd heard that AliExpress - purveyor of fine knock-off Chinese electronics like the GB Boy Colour - had a selection of fake DS Lites on offer, so I went digging. I eventually settled on a cobalt blue DS Lite for the very reasonable price of $40. Given that an original Nintendo console would have cost more than double that back in the day, and given that it's difficult to find an original, new DS Lite for less than ten times that, it seemed like a chance worth taking.
Here's what arrived:
Let's start with the bad first. Side by side with a real DS, the shell is obviously not original. The top case is slightly larger than it should be and bulges outwards slightly along the edge where the clamshell opens. The square black rubber pads that are dotted around the upper screen are fitted imprecisely. The plastic feels cheap, especially when compared to the beautifully glossy Nintendo device. The A, B, X and Y buttons are horribly mushy, and the Start and Select buttons are too small for the holes that they sit in. The cover over the top screen is fitted incorrectly, allowing light from the screen to bleed through its top edge. The screens themselves are set deeper into the casing than on the original. The DS cartridge slot makes a series of nasty griding sounds when a cartridge is inserted, and the cover over the GBA slot is looser than on the original handheld.
In short, the casing is cheap and poorly assembled. But it's close enough.
Now the good. My original DS Lite came from the factory with a dead pixel; a common problem. Cracked hinges were another, and the hinges on mine cracked not long after I bought it. The clone device doesn't exhibit either problem (yet). Both screens are perfect and indistinguishable from the original. We'll see how long the hinge lasts.
Functionally it appears identical to the Nintendo console. When you consider that the K1-GBA still isn't a perfect clone of the GBA, and that this thing has a GBA embedded within it, that's stunning. The only explanations that make any sense are that this clone is from a DS factory secretly making extra devices on the side, or that someone stole and replicated the PCBs like the Everdrive clones, or that it's assembled from spare OEM parts and a third-party case.
It even comes with a box (missing the serial number, of course), manual, soft case and screen protectors.
I haven't really tried the stylus yet. It's possible that the touchscreen is terrible. The screen's texture feels different to the original, though that could just be because it's new. I haven't tried the charger yet as the battery is fully charged. The combination of a knock-off charger and a knock-off battery is a little concerning. Other than that, it looks to be a good alternative to either buying a second-hand DS Lite (and possibly ending up with a device that was mistreated) or paying a crazy amount for a new official device.
Oh, and now that I have a second DS Lite, my original console has started recognizing carts again.
gb-boy-colour
hanky-alien
k1-gba
Chuckie Egg 20170410
With egg hunting season almost upon us, it seems appropriate to release a little update for my favorite egg hunting game. Grab it now:
ChuckieEggDS
ChuckieEggDC
ChuckieEggPSP
I'd hoped to get a level editor into the next release, but it's not finished. This version fixes a few bugs and adds a couple of minor new features.
Scores are persisted on DS and PSP.
PSP analog stick can control Harry.
Fixed crash when completing a level if a cheat label is showing.
Fixed crash when switching to high score table.
Harry dismounts ladders correctly when climbing and jump is pressed.
Player does not get points when hens eat grain.
Bonus cannot be negative.
I haven't looked into working with the Dreamcast's VMU yet.
Transparency in SZLib
One of the neat features in early Woopsi was screen dimming. The class responsible read each overlapped pixel from the framebuffer, adjusted its brightness, and wrote it back. I eventually had to kill the feature when I changed how the rendering system worked and broke any support for transparency.
Woopsi's drawing algorithm (essentially a reversed painter's algorithm) looks like this:
Pass in a rect that describes the area to be redrawn;
For each layer in the layer hierarchy, from the topmost down:
Draw the parts of the layer that intersect with the rect;
Subtract the drawn parts from the rect.
Each layer is expected to own all pixels within its rectangular region. To support transparency, there would need to be a way for layers to opt out of subtracting themselves from the redraw rect so that lower layers could draw into the same area. Even if there were a way to achieve that, we're traversing the hierarchy the wrong way. Transparent views need to render over the top of existing framebuffer data. We need to draw from the bottom up.
The CanvasLayers JavaScript library has a workaround but it's really inefficient. When setting the library up, it includes the option to support transparency. With that enabled, this is the algorithhm:
For each layer in the layer hierarchy, from the bottommost up:
Draw the parts of the layer that intersect the rect.
It's just the painter's algorithm. Its awfulness is slightly mitigated by all of the dirty rectangle work that the library does, but we're still pointlessly drawing a bunch of stuff below opaque layers. We're also forced to maintain two algorithms to do the same work.
SZLib needed to support transparency in order for overlapping objects in Hanky Alien and Chuckie Egg to work, so I put some thought into the problem and arrived at the obvious (with hindsight) solution: a two-pass algorithm. In pass 1, we iterate over the layers from top-down to figure out which layer will be responsible for drawing what. In pass 2, we iterate over pass 1's results from bottom-up and perform the drawing.
Pass 1 looks like this:
Create an array of layer/rect tuples;
Find the intersection of the layer with the rect;
Create a tuple containing the intersection and the layer;
If the layer is opaque, remove the intersection from the rect.
Note that we don't consider an intersection to be "used" if the layer is transparent, which allows lower layers to create their own tuple in subsequent iterations.
In pass 2, we iterate backwards over the tuple array and redraw each tuple. Pass 1 gave us an array ordered by z-index from high to low; by iterating backwards we therefore redraw from the bottom up. Lower opaque layers are drawn before higher transparent layers.
This new algorithm supports transparency with the minimum amount of redundant drawing.
woopsi
canvaslayers
Chuckie Egg Releases
Just in time for the holidays, here are final versions of Chuckie Egg for DS and PSP, and an almost-final version for the Dreamcast:
The PSP has a huge screen. Well, relative to the DS; maybe not so huge if you compare it to a modern phone. What do you do with all that space if you're remaking a game that fits in 256x192 pixels? The obvious thing to do is double up the pixels and make the graphics twice the size. But wait; at 272 pixels tall the PSP's screen is only 70% larger vertically than the Dragon 32, which means we can't double up the resolution without losing 30% of the game's display. I imagine it's possible to wrap the game's bitmap onto a quad and get the GPU to stretch it, but I eventually decided just to centre the game at its native resolution.
The PSP's screen is 480 pixels wide but its default framebuffer is 512 pixels wide. Trying to change the width of the framebuffer to match the screen does not work (it results in the display being smeared horizontally, which always means "the dimensions of your bitmap do not match the layout of memory"). I had to add in the concept of "usable" vs "available" framebuffer space ("physical" vs "logical", I suppose) and base the layout of the various screens on that.
It's possible to push the PSP's "home" button and quit from a game back to the launcher. Making this work entails creating a background thread and wiring up a callback that the OS can use to signal to the game that it needs to quit. It's very simplistic; if the game doesn't implement the callback then the system just hangs forever. The OS doesn't appear to forcibly quit rogue processes. I'm not even sure that it's really a multi-process system. I imagine Sony handled errors like this in their QA process so they didn't bother with anything more elaborate to catch badly-implemented games.
Different geographic regions have different PSP button layouts. I don't quite know what Sony thought the advantage of swapping the O and X buttons was, but it means well-behaved homebrew has to work around it. Games typically either allow the buttons to be remapped or come in different builds for different layouts. Official games were region-locked so that wasn't an issue; it was probably fixed during localization. I'm too lazy to deal with it.
Getting sound working was troublesome. The basic PSPSDK libraries offer a way - I think - to craft PCM data and play it back, which really doesn't help if you just want to play a WAV and not put any thought into it. I ended up using libmikmod, which has some peculiarities. Its MikMod_Update() function must be called regularly in order for sounds to work, but that can be stuffed into another background thread and forgotten about. It offers two ways to play back samples: Sample_Play(), which will automatically choose a channel to play back on, and Voice_Play() which lets you choose the channel. I found that Sample_Play() always chose exactly the wrong channel and ended up stopping sounds that I wanted to continue playing, so I switched to the alternative function. Voice_Play() doesn't have any useful documentation. Inspecting the library's code reveals that the trick is to set the volume, frequency and panning of the voice each time a new sample begins:
Voice_Play(channel, sound, 0);
Voice_SetVolume(channel, sound->volume << 2);
Voice_SetPanning(channel, PAN_CENTER);
Voice_SetFrequency(channel, sound->speed);
The DS has a second screen. What do you do with two screens when remaking a game designed for one? I had a few ideas:
Level editor;
Chuckie Egg title screen;
Simian Zombie logo;
Dragon 32 image.
In the end the SZ logo was simplest, so I went with that. Otherwise, the DS is my default platform, so there aren't any surprises here.
It appears that calling snd_sfx_stop() on a channel playing a stereo WAV file will only stop one of the channels, which explains why sounds weren't behaving themselves in the beta. Switching to mono files fixed it. Another problem was caused by limitations of the audio hardware: the Dreamcast can only play back the first 65534 samples in a WAV file, which is far shorter than several of the sounds in the game. To work around this I halved the sample rates of the longer samples. That fixed most of them, but the title song and Spectrum loading sound were still too long. I converted those to MP3 and used the streaming API, but that created problems of its own. Sounds still cut out or don't play, and the emulator I've been using to help development crashes whenever I call mp3_stop(). There's still some work to do there.
The DC has a similar problem to the PSP: I'm using the 320x240 NTSC graphics mode, but a good portion of that is off-screen on my TV. The "usable" framebuffer space concept helped out here.
The DC feels noticeably faster than the other two platforms, which is odd, as I'd expect them to run at identical framerates. Perhaps it's just because it runs on such a massive display.
The Dreamcast's reversed ARGB ordering means I've had to convert bitmaps into both DS and DC sourcecode and use #ifdefs to choose the right version of the data for the current target platform at compile time.
What was most surprising was how little effort I had to put into Chuckie Egg in order to make it performant on these different platforms. The effort that went into Hanky Alien presumably helped a lot. I was testing HankyAlien with up to ~140 views on screen at once and up to ~45 of those updating simultaneously. In contrast, despite superficially being a more complex game, Chuckie Egg has ~45 views on screen at once and only ~10 updating simultaneously. (It's interesting to note that, while both the DS and DC struggled with the HankyAlien test scenario and their framerates suffered, the PSP sauntered through it without a hitch. I really must write something specifically for the PSP in future.)
Writing object-oriented C is fun, but sometimes I look at the amount of boilerplate necessary to create a new "class" and decide to do things another way, particularly if I'm creating a base class. The most simple class requires:
A static metaclass struct, which forms a linked list back through the chain of superclasses (it enables the program to determine the type of an object at runtime).
A static callback struct that includes pointers to equality/comparison/hash/copy/dealloc functions.
Declarations of those functions.
Implementations of those functions.
A struct with the member variables of the class.
A typedef that defines a pointer to the struct, allowing the struct to be hidden.
A constructor that calls the allocator and initializer methods of the class.
An initializer function that sets up the members of class instances and calls back to the superclass' initializer.
A convenience release method that wraps the basic release method.
If the class is intended to be subclassed it must also:
Provide an additional private header including:
A callback struct definition that nests the superclass' callback struct and enables "methods" to be "overridden" (really it's the template pattern with function pointers).
The struct itself, so subclasses can directly access properties of the struct and include the struct as the first item in their own structs.
Call the functions in the callback struct when appropriate (including those for the superclass).
Every time I create a new class I do so by copying-and-pasting an existing class and modifying it rather than start it from scratch and have to retype all of the boilerplate. Sometimes I'll think about the work involved in setting one of these things up, pine for C++ or Objective-C, and then use a different structure that's less "correct" but will still get the job done without smelling too badly. The grain and eggs, for example, should really inherit from a single "collectible item" class, but the correctness of that design doesn't in any way compensate for the amount of work involved in setting it all up.
Keeping a strict separation between the model (game logic), the views (the stuff you see on screen) and the view controller (delegate of the model; updates the views to match incoming events) results in some beautifully clean code but makes prototyping difficult, especially early on when none of the infrastructure is in place. I did most of the early prototyping in the view controller before moving it into a separate model.
Each level renders its static content (ladders, platforms and bird cage) as a bitmap when it begins. It passes that up through the model to the view controller, which uses the bitmap as the background view for the game. That eliminated the need to create dozens of views to represent tiles that never change during the course of a level.
There are now 134,000 lines of code in the project, but a sizable number of those are included in bitmaps that have been converted to C.
PSP Surprise
I've mentioned before that SZLib presents challenges:
The downside to completely ignoring the capabilities of the DS hardware and doing all of the graphics work with just the CPU and a framebuffer is that it is insanely expensive.
However, its bare-bones approach - it just needs a framebuffer and a way to read a joystick, pretty much - made getting it working on the Dreamcast fairly trivial. Getting it working on other platforms should be simple too, but when choosing a new platform for the library I eliminated everything but the Dreamcast as a potential target.
I was too hasty when I crossed the PSP off that list. The handheld does offer the ability to write directly to the framebuffer. It took about an hour or so to get to this point:
By far the hardest part was getting MikMod set up to play sound effects, which took a couple of hours on its own.
There's a little bit of work to do. The PSP has a physical screen size of 480x272, but for some reason it seems that the frame buffer is 512 pixels wide. The disconnect between the physical and logical sizes means everything is slightly off-center. Also, the "home" button isn't wired up yet. Overall, though, the game works just as well on the PSP as it doesn on the Dreamcast and NDS.
Excitingly, because they're based on the same libraries, HankyAlien also now runs on the PSP.
mikmod
Back in the early eighties, when the home computer boom was booming, my parents decided to buy themselves a computer. Following the advice of various computing magazines of the era they ended up with what was supposedly the best of the bunch: the Dragon 32. It featured 32K of RAM, a real keyboard and a Centronics parallel port. It was powered by Bill Gates' favourite 8-bit CPU, the Motorola 6809. Unfortunately for my parents and their new Dragon, the manufacturer ran into financial troubles and collapsed not long after.
The unusual choice of the 6809 CPU meant very little software was written for or ported to the platform. One of the few games that made it was the BBC and Spectrum classic "Chuckie Egg". This obscure port (the World of Spectrum doesn't list it) is by far my favourite version, and it's the game I spent the most time playing on our Dragon. There has never been a remake of it. Worse, neither the Dreamcast nor the Nintendo DS has a native version of Chuckie Egg. Let's fix that.
Here's a beta version of my remake of the Dragon 32 version of Chucky Egg for Nintendo DS and Dreamcast:
A couple of screenshots:
The game itself is fully playable, but there's still some polishing to do:
Sound on the Dreamcast is misbehaving;
The Dreamcast version runs faster than the DS, so some timings are off;
Later levels do not have increased numbers of hens or faster moving hens;
Hens don't eat grain;
The high score table is not functional (it's just a bitmap);
There's no "game over" screen;
The score/timer/etc display layout and font is all wrong;
Remaining lives aren't displayed;
The font in the title screen scroller is wrong.
This is an inexhaustive list of bugs I spotted in the original game while making this:
On the first level, climb the largest ladder to the third platform on the right (the start of the staircase). Stand on the ladder just below the top of the floor and jump right. Instead of bouncing off the first step in the staircase, Harry lands inside it. Now press right and Harry will fall through the platform on the right. (The remake fixes this.)
On level 7, stand next to the two blocks immediately on the right when the level starts. Face them, hold "right", and jump. Harry stands in the middle of the upper block. (The remake reproduces this.)
Animation frame doesn't reset when Harry stands on an elevator. (The remake fixes this.)
When a new level rolls in the remaining time is set to 999; it immediately jumps to 898 when the level starts. After dying it resets to 899.
Harry gets killed if the elevator he is standing on hits the top of the screen, but if he is jumping then he falls through the elevator. (The remake doesn't kill Harry; he just drops down when the elevator disappears.)
There are a bunch of inconsistencies with ladder behavior. Sometimes it is possible to walk from a platform all the way across a ladder; sometimes Harry falls through half-way along the ladder. This looks more like a bug than desired behavior.
One of the extra hens on level 3 (at the bottom of the twin ladders) starts one block below where it should do.
Here are some of the differences between the remake and the original:
Jump isn't quite the same.
Frame rate is much better.
No flickering.
Hen patterns aren't the same (but the Dragon doesn't match the BBC or ZX, and they don't match each other, so that's OK).
Duck moves smoothly.
Hens move more smoothly.
I think this will be the last remake for a while. This is the list of remakes I've managed to complete (more or less) so far:
Pong (Blitz Basic/C/C++/Java/Flash; Amiga/Cybiko/GBA/DS)
Asteroids (Flash)
Mario Bros (Flash)
Tetris (Flash)
IK+ (Flash)
PacMan (Java; Linux)
Space War (Java; web applet)
Earth Shaker (C++; DS/SDL)
Super Foul Egg (C++/Objective-C; DS/SDL/OSX/iOS)
BioShock sub game (C++; DS/SDL)
Space Invaders (C; DS/SDL/DC)
Chuckie Egg (C; DS/SDL/DC)
This is the list of remakes I started but abandoned:
World Grand Prix (Flash)
Trick or Treat (Java; web applet)
Atic Atac (C/C++; Cybiko/DS/SDL)
Defender (C/C++; DS)
Dan Dare (C; DS/SDL)
dragon-32
Powered by Gobble.